You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven构建出现Artifact与assembly目标文件引用相同文件警告如何解决

警告含义

这个告警是maven-assembly-plugin执行打包任务时触发的,核心原因是当前项目编译生成的原始Jar包路径,和你配置的assembly聚合包的最终输出路径、文件名完全重复。
插件为了避免直接覆盖原始Jar导致内容丢失,自动将原始Jar移动到临时目录后,再把内容合并进最终的assembly输出文件中。默认情况下这个处理逻辑不会影响最终构建结果,仅为风险提示。

处理方案
  • 方案1:修改assembly插件的输出文件名
    在pom.xml中给maven-assembly-plugin添加自定义finalName配置,让最终输出的聚合包和原始Jar包名区分开,参考配置如下:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>3.3.0</version>
  <configuration>
    <!-- 自定义输出名,增加后缀和原始Jar区分 -->
    <finalName>${project.artifactId}-${project.version}-with-deps</finalName>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <appendAssemblyId>false</appendAssemblyId>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>
  • 方案2:修改assembly插件的输出目录
    如果不需要修改文件名,可以指定独立的输出目录,避免同路径下文件名冲突:
<configuration>
  <!-- 输出到target下的独立子目录 -->
  <outputDirectory>${project.build.directory}/assembly-package</outputDirectory>
  <!-- 其余原有配置保持不变 -->
</configuration>
  • 方案3:检查自定义assembly描述符配置
    如果你使用了自定义的assembly xml描述符,检查描述符内的<outputDirectory>、<destFile>配置,确认没有将原始Jar路径设置为assembly的最终输出路径,调整对应规则即可。

如果对构建结果没有特殊要求,该告警也可以直接忽略,插件的自动临时文件转移逻辑已经规避了内容损坏风险,仅在构建异常中断时可能残留临时文件,手动清理target目录即可解决。

内容的提问来源于stack exchange,提问作者geschema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:57:01