gpt4 book ai didi

maven - 如何为 Maven 程序集插件自定义属性?

转载 作者:行者123 更新时间:2023-12-01 13:41:39 25 4
gpt4 key购买 nike

我有一个使用 Maven 编译的 Java 项目,最后 maven-assembly-plugin 用于将编译的 JAR 文件、DLL 等打包到 10 个不同的 ZIP 文件中。每个 ZIP 文件适用于不同的环境(具有不同的 DLL),但它们的内容通常是相同的。

现在我使用 10 个不同的 assembly.xml 文件来创建这 10 个 ZIP 文件。

问题是这些 XML 几乎相同,唯一的区别是 DLL 路径中的 1 个字。此类文件的示例:(实际上它要长得多)

<assembly>
<id>{someVariable}</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<!-- Copying DLLs: -->
<fileSet>
<directory>target/dll/{someVariable}</directory>
<outputDirectory>dll</outputDirectory>
<includes>
<include>*.dll</include>
</includes>
</fileSet>
</fileSets>
</assembly>

如您所见,我想使用 {someVariable}在更多地方这是所需的功能,但我无法使其工作。希望这是可能的,这是我问题的核心。我想用同样的 assembly.xml文件并始终使用不同的值 {someVariable} 执行 10 次像这样:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-the-zip</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>src/assembly/myCommonAssembly.xml</descriptor>
</descriptors>
<properties>
<someVariable>my-value</someVariable>
</properties>
</configuration>
</execution>
</executions>
</plugin>

是否可以?仅供引用:第 <properties> 节不起作用,我只是想表明我想做什么。

我知道我可以在 poml.xml 中创建属性并在 assembly.xml 中使用它们但它并没有解决我的问题,因为我仍然需要创建 10 个不同的 assembly.xml 文件。

This是我找到的最好的建议,但它不是答案。

最佳答案

您可以使用 iterator-maven-plugin , 以便迭代所有不同的属性值。这个 Mojo 有一个 iterator 目标允许迭代一组给定的属性,并将它们添加为 Maven 属性:

The iterator-maven-plugin will inject the current value as a property which means you can use this property to parameterize your build.



在您的情况下,您可以:
<plugin>
<groupId>com.soebes.maven.plugins</groupId>
<artifactId>iterator-maven-plugin</artifactId>
<version>0.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>iterator</goal>
</goals>
<configuration>
<items>
<item>my-value-1</item>
<item>my-value-2</item>
<item>my-value-3</item>
</items>
<pluginExecutors>
<pluginExecutor>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
</plugin>
<goal>single</goal>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/assembly/myCommonAssembly.xml</descriptor>
</descriptors>
</configuration>
</pluginExecutor>
</pluginExecutors>
</configuration>
</execution>
</executions>
</plugin>

package阶段,此配置将迭代 3 个给定值, my-value-1my-value-3 , 并且每次执行 Maven Assembly Plugin。对于给定的执行,可以使用 ${item} 检索当前迭代值。 .因此,您的通用程序集描述符将变为:
<assembly>
<id>${item}</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<!-- Copying DLLs: -->
<fileSet>
<directory>target/dll/${item}</directory>
<outputDirectory>dll</outputDirectory>
<includes>
<include>*.dll</include>
</includes>
</fileSet>
</fileSets>
</assembly>

关于maven - 如何为 Maven 程序集插件自定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39739277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com