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构建的核心元数据文件,缓存机制对其有独立的处理逻辑,普通的
*.xmlglob无法捕获它的变更 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
相关产品推荐
相关产品推荐

