maven-assembly-plugin把java工程打包成为一个可执行的jar包
2015-05-29 14:08
821 查看
用java写了一个小工具,使用maven java 工程。写完后,想打包成一个可执行的jar包。
使用maven的插件maven-assembly-plugin
pom.xml里添加
执行命令:
在target文件夹里生成MavenTestApp-1.0-SNAPSHOT-jar-with-dependencies.jar
这个jar包便是可执行的jar了,用命令
注意:compile必须再assembly:single之前,要不然你工程的代码(class文件)就不会被打包进去。
assembly:single是maven的goal.
通常情况下,这个goal要绑定到maven build 的phase里,这样它就可以自动执行。mvn package是用来打包jar包的。只是jar包不可执行。
在以上的pom文件里加
这样的话直接运行以下命令就行了。
另外有几点要注意。
1. 必须要有
否则会报错
no main manifest attribute, in target\MavenTestApp-1.0-SNAPSHOT-jar-with-dependencies.jar
2. 使用
使用
3. 如果使用
用命令
无需再像命令
使用maven的插件maven-assembly-plugin
pom.xml里添加
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>org.kuan.wang.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
执行命令:
mvn clean compile assembly:single
在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>
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>org.kuan.wang.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
这样的话直接运行以下命令就行了。
mvn clean package
另外有几点要注意。
1. 必须要有
<archive> <manifest> <mainClass>org.kuan.wang.App</mainClass> </manifest> </archive>
否则会报错
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.
相关文章推荐
- 使用maven+eclipse搭建struts2开发环境
- maven中下载jar包源码和javadoc的命令介绍
- Maven学习笔记
- Maven for Eclipse
- maven 使用 问题记录
- 《Maven权威指南》学习笔记四_创建一个简单的Maven项目
- 《Maven权威指南》学习笔记十五_装配(Assembly Plugin) 4000
- 《Maven权威指南》学习笔记十七_一个多模块项目 3ff0
- 《Maven权威指南》学习笔记十八_多模块企业级项目 3ff0
- 《Maven权威指南》学习笔记二十_关于POM
- 近日maven学习概况
- Eclipse Maven Tomcat的利用配置
- (转)Vaadin 使用 Maven
- Maven和Eclipse联合开发
- Maven intall OR Maven build
- JFBlog 1.0 maven版本开源
- 使用Maven开发Android的常见问题
- XML中的特殊字符
- maven打包依赖插件
- maven解决第三方jar部署问题