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