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

Maven执行site goal时出现Overwriting artifact警告的解决求助

Maven执行clean package site时重复打包警告的解决方法

问题场景

执行mvn clean package无任何警告,但运行mvn clean package site时会触发如下警告:

[WARNING] Overwriting artifact's file from C:\Github\project\target\project.jar to C:\Github\project\target\classes

当前需求是生成JAR文件、运行单元测试并生成报告,所有流程功能正常,仅需消除该警告。从构建日志可明确看到,代码存在两次完整的编译打包流程,第二次执行compile目标时触发了上述警告。

根因分析

从日志细节可知:site阶段调用maven-surefire-report-plugin生成测试报告时,会自动fork执行test阶段的前置流程(包括resources、compile、testCompile等)。而package阶段已经生成了project.jar文件,第二次执行compile时,Maven检测到target/classes目录与已生成的JAR存在文件冲突,因此抛出警告。

此外,项目中配置的copy-resources插件会将测试报告复制到target/classes目录,进一步增加了文件冲突的概率;虽然第二次test阶段被跳过,但编译相关的前置流程仍会完整执行。

解决办法

方法1:配置Surefire报告插件跳过fork阶段的编译

在pom.xml中给maven-surefire-report-plugin添加配置,让其复用已生成的编译产物,跳过fork流程中的编译步骤:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-report-plugin</artifactId>
      <version>3.5.2</version>
      <configuration>
        <skipCompile>true</skipCompile>
        <skipTestCompile>true</skipTestCompile>
      </configuration>
    </plugin>
  </plugins>
</build>

方法2:调整构建命令的阶段顺序

将执行命令改为mvn clean site package,让site阶段先执行,此时还未生成JAR文件,不会触发文件覆盖警告。但需注意:此方法可能导致后续package阶段覆盖site生成的部分资源,需结合项目实际情况验证。

方法3:禁用编译器插件的artifact覆盖检查

在pom.xml中配置maven-compiler-plugin,关闭其对已生成artifact的覆盖检查:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.13.0</version>
      <configuration>
        <overwriteReleases>false</overwriteReleases>
        <overwriteSnapshots>false</overwriteSnapshots>
      </configuration>
    </plugin>
  </plugins>
</build>

验证方式

修改配置后执行mvn clean package site,查看构建日志确认Overwriting artifact's file警告消失,同时检查JAR生成、测试执行、报告输出是否均正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:17:11