到目前为止,我使用 maven 程序集插件为每个工件生成两个 JAR - 编译源和依赖项 - 原因很简单 - 仅通过网络部署已编译的源比部署 40 MB 的一体机 JAR 快得多数据的。
由于覆盖了内部文件,我不得不切换到 maven shade 插件才能使用该<transformers>
功能。但是我无法同时运行这两个执行:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>shade-libs</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>target/assembly/${project.artifactId}-libs.jar</outputFile>
<artifactSet>
<excludes>
<exclude>...</exclude>
</excludes>
</artifactSet>
<transformers>
<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>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>shade-main</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>target/assembly/${project.artifactId}.jar</outputFile>
<artifactSet>
<includes>
<include>...</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
当我运行时mvn package
,只运行第二次执行。第一个总是被忽略。使用 Maven 程序集插件,它工作得很好。
当然解决方案可能是同时使用程序集和阴影插件,但我想找到更一致的解决方案。