有时候我们为了方便部署java程序需要把项目依赖的jar包都打包到一个jar文件中。可以使用maven-assembly-plugin插件来实现打包。
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>cn.outofmemory.MainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
在pom.xml中添加了上述plugin配置之后可以通过下面的命令来编译。注意assembly:single必须在compile后面。
mvn clean compile assembly:single
通常情况下这个插件绑定到编译阶段自动执行,这可以保证当前正在编译的jar包可以在mvn install/deployment/release阶段之前编译成功。
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>cn.outofmemory.MainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <!-- 此处指定继承合并 --> <phase>package</phase> <!-- 绑定到打包阶段 --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>