我使用 maven-remote-resources-plugin 来共享程序集描述符。首先,创建一个单独的项目来保存您要共享的程序集描述符。
project-assemblies
src
main
resources
<your assembly descriptors, in any package structure you like>
pom.xml
POM 的构建部分(假设这是项目 com.mycompany.project:project-assemblies):
<build>
<plugins>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*.xml</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
要从另一个项目中引用它,请将其添加到项目的 POM:
<properties>
<shared.assemblies.dir>${project.build.directory}/assemblies</shared.assemblies.dir>
<project-assemblies.version><yourAssemblyProjectVersion</project-assemblies.version>
</properties>
<!-- copy the assembly descriptors into this project -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<executions>
<execution>
<id>assemblies</id>
<phase>initialize</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<resourceBundles>
<resourceBundle>com.mycompany.project:project-assemblies:${project-assembly.version}</resourceBundle>
</resourceBundles>
<attached>false</attached>
<outputDirectory>${shared.assemblies.dir}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
设置为 false 意味着捆绑包的内容不会包含在最终的项目构建中。
<!-- Apply the retrieved assembly descriptor to this project -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>run-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${shared.assemblies.dir}/<pathToAssemblyDescriptor></descriptor>
</descriptors>
<!-- other config here -->
</configuration>
</execution>
</executions>
</plugin>
像魅力一样工作。