【发布时间】:2016-02-13 21:13:54
【问题描述】:
是否可以覆盖运行assembly:single 目标创建的 jar 文件的默认名称?我想添加一个具有非标准名称的依赖项的 jar。我使用的是 2.6 版的插件。
【问题讨论】:
标签: maven maven-assembly-plugin
是否可以覆盖运行assembly:single 目标创建的 jar 文件的默认名称?我想添加一个具有非标准名称的依赖项的 jar。我使用的是 2.6 版的插件。
【问题讨论】:
标签: maven maven-assembly-plugin
执行此操作的正确方法(如 on Maven JIRA tracker 所述)是设置 build.finalName 而不是使用只读的 finalName 插件属性。这是一个如何摆脱“jar-with-dependencies”和版本的示例,这对于创建一个稳定的名称和消除在 README 说明中使用的 2 个 JAR 的潜在混淆存在非常有用:
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
...
<configuration>
<appendAssemblyId>false</appendAssemblyId>
...
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
【讨论】:
是的,您需要使用finalName 配置属性。请注意,您可能还希望借助 appendAssemblyId 属性删除默认附加到最终名称的程序集 ID。
示例配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
...
<finalName>myFinalName</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
【讨论】:
finalName 参数。它不是在文档中生成的,它被声明为“只读”:参见source code。所以通常不能在配置中设置它,但它是 Maven 3 中的副作用(或错误)。请参阅MNG-5001 或 MJAR-264。