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

Maven Build Cache未识别pom.xml变更的问题排查

Maven Build Cache未识别子模块pom.xml变更问题解答

精准问题标题优化

Maven Build Cache未感知子模块pom.xml中maven.deploy.skip配置移除,仍跳过deploy插件执行

问题原因

Maven Build Cache的<global>级别glob规则不会默认覆盖模块根目录的pom.xml:

  • <global>节点的glob主要匹配项目源码、资源目录下的文件,而非模块根目录的核心配置文件pom.xml
  • pom.xml作为Maven构建的核心元数据文件,缓存机制对其有独立的处理逻辑,普通的*.xml glob无法捕获它的变更
  • maven.deploy.skip这类内置属性的变更属于构建输入的核心变化,必须让缓存明确感知到pom.xml的修改才能触发缓存失效

解决方案

1. 显式配置pom.xml为缓存输入

修改maven-build-cache-config.xml,添加<project>节点声明pom.xml为项目级缓存输入:

<?xml version="1.0" encoding="UTF-8" ?>
<cache xmlns="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0 http://maven.apache.org/xsd/cache-config-1.0.0.xsd">
    <configuration>
        <enabled>true</enabled>
        <hashAlgorithm>XX</hashAlgorithm>
    </configuration>
    <input>
        <global>
            <glob>{*.java,*.kt,*.xml,*.properties,*.yml,*.yaml}</glob>
        </global>
        <!-- 显式将模块根目录的pom.xml纳入缓存校验 -->
        <project>
            <glob>pom.xml</glob>
        </project>
    </input>
</cache>

<project>级别的glob会针对每个模块的根目录进行匹配,确保pom.xml的任何修改都会被缓存机制捕获,触发对应构建步骤的缓存失效。

2. 手动清理缓存(可选)

如果修改配置后仍未生效,可以手动清理本地Maven构建缓存目录(默认路径为~/.m2/build-cache),之后重新执行构建即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:13:24