我的多个Maven项目使用maven-assembly-plugin需要将两个二进制文件复制到一个文件夹中。
这两个文件是所有项目都共有的:
procrun.exe
procrunw.exe
我希望能重用这些文件。它们可以来自依赖项,例如JAR或ZIP文件,以后作为构建过程的一部分进行解压缩。这样,如果我以后选择升级二进制文件,我可以创建一个新版本的公共项目并仅更改对公共项目的依赖关系。这样做的另一个原因是我希望在各个项目中使用最少数量的与构建相关的文件。
现在,棘手的部分是我需要在解压依赖项时重命名每个文件。例如,对于项目A,我需要将文件复制如下:
bin/projectA_procrun.exe
bin/projectA_procrunw.exe
部分解决方案
我的部分解决方案是在每个Maven项目上的src/main/build/bin文件夹中拥有这两个文件。
这不是理想的,但至少我能够重用此页面中描述的共同汇编文件的内容:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>my_assembly</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>src/main/build/bin/procrun.exe</source>
<outputDirectory>bin</outputDirectory>
<destName>${myexecutable.name}.exe</destName>
</file>
<file>
<source>src/main/build/bin/procrunw.exe</source>
<outputDirectory>bin</outputDirectory>
<destName>${myexecutable.name}w.exe</destName>
</file>
</files>
<!-- Additional details ommitted -->
</assembly>
尝试失败
在 Assembly 中,outputFileNameMapping 属性允许重命名工件但不允许重命名程序集中的文件。
一次失败的尝试是将每个文件注册为一个单独的 Maven 工件。这样,我可以在与我的每个工件对应的 <assembly>
部分中使用 outputFileNameMapping。
我遇到的问题是 Nexus 不喜欢将 'exe' 作为一个工件。
问题
有没有什么想法可以实现预期的结果,无论是通过完善我的部分还是采用替代方法?
bin/projectA/procrun.exe
。如果可以,则可以通过Maven Assembly插件实现。 - ecoe