from:http://blog.csdn.net/qiyueqinglian/article/details/46229157
用Java写了一个小工具,使用maven java 工程。写完后,想打包成一个可执行的jar包。
使用maven的插件maven-assembly-plugin
pom.xml里添加
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
执行命令:
- 1
- 1
在target文件夹里生成MavenTestApp-1.0-SNAPSHOT-jar-with-dependencies.jar
这个jar包便是可执行的jar了,用命令java -jar path\jarfile
便可以执行。
注意:compile必须再assembly:single之前,要不然你工程的代码(class文件)就不会被打包进去。
assembly:single是maven的goal.
通常情况下,这个goal要绑定到maven build 的phase里,这样它就可以自动执行。mvn package是用来打包jar包的。只是jar包不可执行。
在以上的pom文件里加<executions>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
这样的话直接运行以下命令就行了。
- 1
- 1
另外有几点要注意。
1. 必须要有
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
否则会报错
no main manifest attribute, in target\MavenTestApp-1.0-SNAPSHOT-jar-with-dependencies.jar <mainClass>
是你自己工程的入口。
2. 使用mvn clean compile assembly:single
,只生成一个jar包,名字里有jar-with-dependencies,可执行。
使用mvn package
生成两个jar包,名字里有jar-with-dependencies的jar是可执行的。
3. 如果使用<goal>assembly</goal>
用命令mvn assembly:assembly
会生成两个jar包。跟使用了mvn package
一样
无需再像命令assembly:single
一样前面必须加compile.