打包成Jar文件时指定要执行的主类的方式,注意<plugin>
都要放在<build><plugins> XXXX</plugins></build>
里面,项目都使用spring吗,通过maven命令mvn package
就可以打包了。
使用maven-jar-plugin插件打包
<!--打成jar时,设定manifest的参数,比如指定运行的Main class,还有依赖的jar包,加入classpath中-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>/data/lib</classpathPrefix>
<mainClass>com.mo.spring.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
使用spring-boot-maven-plugin 插件打包
<properties>
<start-class>com.mo.spring.App</start-class>
</properties>
... ...
<!--如果你的POM是继承spring-boot-starter-parent的话,则不需要下面的配置-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.5.RELEASE</version>
<configuration>
<mainClass>${start-class}</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
使用maven-shade-plugin插件打包
用于把多个jar包,打成1个jar包。一般Java项目都会依赖其他第三方jar包,最终打包时,希望把其他jar包包含在一个jar包里
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.mo.spring.App</Main-Class>
<X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>