maven3 创建项目并打包可执行 jar 包

本贴最后更新于 2644 天前,其中的信息可能已经斗转星移

参考地址:
[maven3 常用命令、java 项目搭建、web 项目搭建详细图解]
[Maven 生成可以直接运行的 jar 包的多种方式]

一、创建 maven 项目

创建 java 项目:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

命令说明

  mvn archetype:generate  固定格式

  -DgroupId         组织标识(包名)

  -DartifactId        项目名称

  -DarchetypeArtifactId    指定 ArchetypeId,maven-archetype-quickstart,创建一个 Java Project;maven-archetype-webapp,创建一个 Web Project

  -DinteractiveMode      是否使用交互模式

标准的 Maven 项目结构                                   

    src/main/java  存放项目的源代码

    src/test/java  存放测试源代码

    如果要存放一些配置文件,可以再建立一个目录 src/main/resource 存放,如存放 log4j.properties 等

二、maven 生成可执行 jar 包(多种方式)

Maven 可以使用 mvn package 指令对项目进行打包,如果使用 java -jar xxx.jar 执行运行 jar 文件,会出现"no main manifest attribute, in xxx.jar"(没有设置 Main-Class)、ClassNotFoundException(找不到依赖包)等错误。

要想 jar 包能直接通过 java -jar xxx.jar 运行,需要满足:

1、在 jar 包中的 META-INF/MANIFEST.MF 中指定 Main-Class,这样才能确定程序的入口在哪里;

2、要能加载到依赖包。

使用 Maven 有以下几种方法可以生成能直接运行的 jar 包,可以根据需要选择一种合适的方法。

方式一、使用 maven-assembly-plugin 插件打包(本人测试打包成功)

maven 项目创建成功后生成的 pom.xml 原文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hello</groupId>
  <artifactId>test</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>test</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies> 
</project>

添加 springframework 框架(第二个 dependency,根据需求自由配置)和打包插件(build 标签内容)后的 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hello</groupId>
  <artifactId>test</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>test</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
	
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.11.RELEASE</version>
    </dependency>
  </dependencies>
  
  <build>  
    <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-assembly-plugin</artifactId>  
            <version>2.5.5</version>  
            <configuration>  
                <archive>  
                    <manifest>  
                        <mainClass>hello.Application</mainClass>  
                    </manifest>  
                </archive>  
                <descriptorRefs>  
                    <descriptorRef>jar-with-dependencies</descriptorRef>  
                </descriptorRefs>  
            </configuration>  
        </plugin>  
    </plugins>  
</build>  
  
</project>


添加成功后,cmd 中进入 maven 项目目录,执行命令

mvn package assembly:single

之后会自动将项目依赖打入 jar 包,

执行 jar 包:cmd 进入项目目录下的 target 目录,执行命令:java -jar XXX.jar

  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 282 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...