覆盖maven-assembly-plugin输出文件名

sof*_*ave 4 maven maven-assembly-plugin

是否可以覆盖运行assembly:single目标创建的jar文件的默认名称?我想添加一个具有非标准名称依赖项的jar。我正在使用2.6版本的插件。

Tun*_*aki 6

是的,您需要使用finalName配置属性。请注意,您也可能希望在appendAssemblyId属性的帮助下删除默认附加到最终名称的程序集ID 。

样本配置:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    ...
    <finalName>myFinalName</finalName>
    <appendAssemblyId>false</appendAssemblyId>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • _single_ 目标中确实有一个 `finalName` 参数。它不是在文档中生成的,并且被声明为“只读”:请参阅[源代码](https://github.com/apache/maven- assembly-plugin/blob/maven- assembly-plugin-3.3.0 /src/main/java/org/apache/maven/plugins/ assembly/mojos/AbstractAssemblyMojo.java#L144)。所以通常不可能在配置中设置它,但这是 Maven 3 中的副作用(或错误)。请参阅 [MNG-5001](https://issues.apache.org/jira/browse/MNG -5001) 或 [MJAR-264](https://issues.apache.org/jira/browse/MJAR-264)。 (3认同)
  • 程序集插件中没有“finalName”:http://maven.apache.org/plugins/maven-assembly-plugin/single-mojo.html (2认同)

ber*_*kyi 6

执行此操作的正确方法(如Maven JIRA tracker 上所述)是设置build.finalName而不是使用只读finalName插件属性。下面是一个如何摆脱“jar-with-dependency”和版本的示例,这对于创建稳定的名称和消除 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>
Run Code Online (Sandbox Code Playgroud)