maven打包成可运行的jar

有时我们需要开发可直接运行的jar包,直接使用maven对项目打包后,生成的jar,使用java -jar xxx.jar运行会出错,可能会有”no main manifest attribute, in xxx.jar”(没有设置Main-Class)、ClassNotFoundException(找不到依赖包)等错误。

这是由于我们没有设置启动的main方法,打包的时候,没有将依赖包打入到当前的jar内,
要想解决上面的问题,需要以下步骤

1. 在pom文件中添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<build>  
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 配置启动类 -->
<mainClass>com.xxg.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>

2. 在当前项目的目录下执行以下命令

1
mvn assembly:assembly

此时在target目录下会生成jar,其中就包含了依赖的jar包。