我有一个父项目,它定义了程序集插件的整个配置,包括assembly.xml文件(创建一个tar.gz)。现在我想拥有多个可以使用父项目配置和父程序集文件的子项。
现在我尝试了不同的场景,配置工作正常,但我得到的错误是不能在本地找到汇编文件。我想要实现的是不必在所有项目中反复配置和添加相同的文件。有没有办法实现这个目标?
答案 0 :(得分:1)
我使用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>
像魅力一样。
答案 1 :(得分:0)
您应该在所有子模块的pom.xml中禁用程序集:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<skipAssembly>true</skipAssembly>
</configuration>
</plugin>
更常见的是,建议在父pom.xml中创建一个专用的子模块来配置汇编插件而不是配置汇编插件
答案 2 :(得分:0)
好吧,在父pom.xml中创建一个专用的子模块来配置汇编插件而不是配置汇编插件
在此示例中,它创建了一个名为:distribution
的子模块这是一个很好的例子!祝你好运!