maven 项目打包为可运行jar包的步骤
一 测试环境
- java8 SDK
- maven3.6.3
- idea 2020
二 新建项目
- New Project -->选择 maven
- 新建包 com.gmri.mvn_test
- 在新建的包中,新建类MyStarter
package com.gmri.mvn_test;
public class MyStarter {
public static void main(String[] args) {
System.out.println("Hello MyStarter!");
}
}
- 运行 MyStarter,显示结果如下
- 使用 maven,打包为 jar包有2种方法
-
通过双击 maven工具Lifecycle 的 package
-
在 Idea的 Terminal Dos命令窗口执行 mvn 命令
mvn clean package -Dmaven.test.skip=true
- 在命令窗口,切换到 target目录,运行生成的 jar包,程序没有正确运行,显示如下信息
遇到这个问题,是因为jar包没有设置主类的入口。
三 遇到的问题及解决办法
1 方法1—直接修改jar包
通过压缩工具7-zip打开jar包,找到清单目录文件(META-INF -->MANIFEST.MF ),编辑MANIFEST.MF文件:
-
打开压缩包
-
定位META-INF文件夹的MANIFEST.MF文件
-
修改MANIFEST.MF文件
添加Main-Class: com.gmri.mvn_test.MyStarter ,注意书写格式。箭头1处要有一空格,箭头2处要有换行符
- 运行修改后的jar包,一切OK
2 方法2 —打包时指定mainclass
在maven工程中,修改项目配置文件pom.xml,添加插件并设置主类。
....
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.gmri.mvn_test.MyStarter</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
打包后的 jar包就是可直接运行的jar包。