Spring Fat Jar 打包方式
mavn打jar包常用3中方式:
方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包
方法二:使用maven-assembly-plugin插件打包
方法三:使用maven-shade-plugin插件打包
如果jar包中用到了Spring,则用maven-shade-plugin插件打包,如果在运行时出现读取XML schema错误,原因是Spring Framework的多个jar包中包含相同的文件spring.handlers和spring.schemas,生成一个jar包会互相覆盖。为了避免互相影响,可以使用AppendingTransformer来对文件内容追加合并。
使用maven-shade-plugin插件打包Spring Fat Jar的方式:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>weibo.ml.model.storage.StorageServiceMotanApi</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"