Maven程式打包成單個Jar Part 2 -- Maven shade plugin
阿新 • • 發佈:2019-01-22
前面講到assembly在unpack和repackage的過程中不會merge相同名字的檔案而是直接忽略,所以會導致一些問題,所以我們最後選擇了可以通過檔案merge功能的shade plugin,實現如下:
<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>
<finalName >executable</finalName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>Shaded</shadedClassifierName>
<shadedTestJar>true</shadedTestJar>
<transformers >
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.cloud.....PublisherTest</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">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.tooling</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
不過這種方式,我需要把test class,test resouce放到main中,因為shade打包的時候不包含test相關的東西。