maven-assembly-plugin:不触发默认程序集描述符的搜索
maven-assembly-plugin: do not trigger search of default assembly descriptor
我配置了 maven-assembly-plugin 来构建 2 个 zip 工件:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<skipAssembly>true</skipAssembly>
</configuration>
<executions>
<execution>
<id>game-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<skipAssembly>false</skipAssembly>
<descriptors>
<descriptor>${basedir}/assembly/game-zip.xml</descriptor>
</descriptors>
<finalName>game-</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
<execution>
<id>lib-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<skipAssembly>false</skipAssembly>
<descriptors>
<descriptor>${basedir}/assembly/lib-zip.xml</descriptor>
</descriptors>
<finalName>lib-</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
我运行它使用:清理包assembly:single。
此配置运行良好,但它需要 3 个显式标记 skipAssembly。根目录中的那个应该是 true,因为如果不是这样 - 构建将失败(但是,在预期的工作完成之后)。
日志:
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (game-zip) @ gdxg-art ---
[INFO] Reading assembly descriptor: D:\idea\gdxg5/assembly/game-zip.xml
[INFO] Building zip: D:\idea\gdxg5\target\game-.zip
[INFO]
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (lib-zip) @ gdxg-art ---
[INFO] Reading assembly descriptor: D:\idea\gdxg5/assembly/lib-zip.xml
[INFO] Building zip: D:\idea\gdxg5\target\lib-.zip
[INFO]
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (default-cli) @ gdxg-art
最后一次 maven-assembly-plugin 调用失败:无法执行目标 org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (default-cli) on project gdxg-art:读取程序集时出错:找不到程序集描述符。
问题:有什么办法可以避免显式设置 skipAssembly=true/false 吗?因为看起来有点开销。
这个问题是由于您 运行 maven 使用 clean package assembly:single
。您的 maven-assembly-plugin
已经配置为 运行 Maven 生命周期 package
阶段的任务 assembly:single
。
而您正在调用的任务中的这个 小 错误导致了构建周期中的混乱。
而不是 运行宁 clean package assembly:single
并只使用 clean package
,您将不需要您设置的三个 skipAssembly。
我在 maven-assembly-plugin
JIRA 上创建了一个错误票,因为我认为这种行为是不正常的(即使用法更喜欢我们使用 clean package
而不是 clean package assembly:single
) : https://issues.apache.org/jira/browse/MASSEMBLY-763
我配置了 maven-assembly-plugin 来构建 2 个 zip 工件:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<skipAssembly>true</skipAssembly>
</configuration>
<executions>
<execution>
<id>game-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<skipAssembly>false</skipAssembly>
<descriptors>
<descriptor>${basedir}/assembly/game-zip.xml</descriptor>
</descriptors>
<finalName>game-</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
<execution>
<id>lib-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<skipAssembly>false</skipAssembly>
<descriptors>
<descriptor>${basedir}/assembly/lib-zip.xml</descriptor>
</descriptors>
<finalName>lib-</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
我运行它使用:清理包assembly:single。
此配置运行良好,但它需要 3 个显式标记 skipAssembly。根目录中的那个应该是 true,因为如果不是这样 - 构建将失败(但是,在预期的工作完成之后)。
日志:
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (game-zip) @ gdxg-art ---
[INFO] Reading assembly descriptor: D:\idea\gdxg5/assembly/game-zip.xml
[INFO] Building zip: D:\idea\gdxg5\target\game-.zip
[INFO]
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (lib-zip) @ gdxg-art ---
[INFO] Reading assembly descriptor: D:\idea\gdxg5/assembly/lib-zip.xml
[INFO] Building zip: D:\idea\gdxg5\target\lib-.zip
[INFO]
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (default-cli) @ gdxg-art
最后一次 maven-assembly-plugin 调用失败:无法执行目标 org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (default-cli) on project gdxg-art:读取程序集时出错:找不到程序集描述符。
问题:有什么办法可以避免显式设置 skipAssembly=true/false 吗?因为看起来有点开销。
这个问题是由于您 运行 maven 使用 clean package assembly:single
。您的 maven-assembly-plugin
已经配置为 运行 Maven 生命周期 package
阶段的任务 assembly:single
。
而您正在调用的任务中的这个 小 错误导致了构建周期中的混乱。
而不是 运行宁 clean package assembly:single
并只使用 clean package
,您将不需要您设置的三个 skipAssembly。
我在 maven-assembly-plugin
JIRA 上创建了一个错误票,因为我认为这种行为是不正常的(即使用法更喜欢我们使用 clean package
而不是 clean package assembly:single
) : https://issues.apache.org/jira/browse/MASSEMBLY-763