我有一个使用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
文件,并始终以不同的值执行10x,{someVariable}
如下所示:
<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文件。
这是我找到的最佳建议,但这不是答案。
您可以使用iterator-maven-plugin
,以遍历所有不同的属性值。这个Mojo的iterator
目标是能够迭代一组给定的属性,并将它们添加为Maven属性:
iterator-maven-plugin会将当前值作为属性注入,这意味着您可以使用此属性对构建进行参数化。
就您而言,您可能会:
<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-1
直到my-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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句