有没有办法覆盖多模块项目中子模块的maven构建缓存配置? 如果我们假设一个有结构的项目
那么构建缓存配置通常会驻留在主目录的 .mvn 目录中(比如
~/cool-software-main/.mvn/maven-build-cache-config.xml
)。
现在,一个子模块可能需要具有与其他子模块不同的构建缓存扩展配置。有没有办法只修改cool-software-module-A的配置?简单地将 maven-build-cache-config.xml 放入子模块中的 .mvn 目录中似乎不起作用。
事实证明,是的,一些配置,最重要的是,包括将哪些文件视为模块哈希函数的输入,可以通过在模块的 pom 文件中添加专门命名的属性来覆盖。
这在主要文档页面的参数部分下有记录(恕我直言,有点隐藏,因为在主要使用教程和命令行参数下没有提到):https://maven.apache.org/extensions/maven-build-缓存扩展/parameters.html#project-level-properties
本质上
<maven.build.cache.exclude.value.1>src/main/java/package-info.java<maven.build.cache.exclude.value.1>
会将 src/main/java/package-info.java 文件排除在哈希考虑范围之外。请注意,属性的名称是固定的,您无法更改其任何部分。您可以通过在属性名称中使用相同的数字来将路径排除与全局限制结合起来,例如
<maven.build.cache.exclude.value.2>src/main/resources</maven.build.cache.exclude.value.2>
<maven.build.cache.exclude.glob.2>*.md</maven.build.cache.exclude.glob.2>
产生这样的排除规则
<exclude glob="*.md">src/main/resources</exclude>
因为这两个属性通过名称中的 2 联系在一起。