如何停止maven输出“[警告]配置选项'appendAssemblyId'设置为false。”?

问题描述 投票:0回答:2

我有一个生成 jar 的 Maven 项目,但没有附加 maven-assemble-plugin 的appendAssemblyId。

如何让 Maven 停止发出警告:“配置选项‘appendAssemblyId’设置为 false。” ?

编辑: 我被要求包含 pom 文件,但我不允许这样做。我包含了导致错误的 maven-assemble-plugin 块。

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>some.company.hello</mainClass>
      </manifest>
    </archive>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <!-- prevent appending <descriptorRef> "jar-with-dependencies" to final jar name -->
    <appendAssemblyId>false</appendAssemblyId>
  </configuration>
  <executions>
    <execution>
      <!-- For inheritance merges -->
      <id>make-assembly</id>
      <!-- bind to the packaging phase -->
      <phase>package</phase> 
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>    
maven maven-assembly-plugin
2个回答
1
投票

这个答案解释了技术细节,但我认为关键是你在问题中提到的短语。

我有一个生成 jar 的 Maven 项目,但没有附加 maven-assemble-plugin 的appendAssemblyId。

如果我理解正确,我认为这意味着在您的 pom 文件中,您有一个条目表示

    <packaging>jar</packaging>

这样做的作用是创建一个与 maven- assembly-plugin 的输出竞争的 jar 文件,并且 maven- assembly-plugin 胜出,从而导致只有一个 jar 文件。事实上,如果您将

appendAssemblyId
设置回
true
,您将在输出目录中获得两个文件 -
<artifact>.jar
<artifact>-jar-with-dependencies.jar

因此,首先,您应该删除上面提到的

<packaging>
标签,并将以下内容添加到 pom 文件的
<executions>
部分,这样就不会有两个冲突/竞争的 jar 文件(并且警告将消失)离开):

<execution>
    <id>default-jar</id>
    <phase>none</phase>
</execution>

0
投票

我也遇到了同样的问题,我希望标准命名的 jar (没有丑陋的“jar-with-dependencies”附录)是独立的,即包含所有依赖项。

但是,正如OP注意到的:

<appendAssemblyId>false</appendAssemblyId>
发出构建警告。对我来说这是一个问题,因为我有一个严格的管道,其中构建应该因警告而失败。我想保持这种状态。

解决方案是使用

<appendAssemblyId>true</appendAssemblyId>
,但随后在后续步骤中重命名生成的文件(因此具有依赖项的 jar 会覆盖默认 jar)。

也就是说,我使用

copy-rename-maven-plugin
来完成工作:

            <plugin>
                <groupId>com.coderplus.maven.plugins</groupId>
                <artifactId>copy-rename-maven-plugin</artifactId>
                <version>1.0.1</version>
                <executions>
                    <execution>
                        <id>rename-file</id>
                        <phase>package</phase>
                        <goals>
                            <goal>rename</goal>
                        </goals>
                        <configuration>
                            <sourceFile>${project.build.directory}/${build.name}-jar-with-dependencies.jar</sourceFile>
                            <destinationFile>${project.build.directory}/${build.name}.jar</destinationFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

效果:不再有警告,并且生成的jar包含依赖。

对于学分,这个片段的灵感来自于这篇文章。不过,我更改了 Maven 阶段,并改用基于变量的方法,以保持其通用性。不过,您需要在项目中定义

build.name
,例如像这样:
properties

© www.soinside.com 2019 - 2024. All rights reserved.