Java Maven:如何阅读父POM版本
背景:我的大多数Java项目都有很多锅炉板配置,我最终将这些配置写入POM。(例如,sourceEncoding始终为UTF-8,组织详细信息永远不会更改)。为了避免复制粘贴配置块,我创建了自己的标准“父”POM,可以为每个项目扩展 我也有很多工具,我在我工作的每个Java项目中都使用这些工具(例如checkstyle、PMD等),所以我已经将每个工具的插件添加到我的标准父pom中 PMD(和其他一些工具)有一个有趣的问题——它们需要一组配置文件才能正确运行。由于Maven更喜欢使用“每个模块一个可部署资源”的概念,我创建了以下(简化)结构:Java Maven:如何阅读父POM版本,java,maven,maven-2,Java,Maven,Maven 2,背景:我的大多数Java项目都有很多锅炉板配置,我最终将这些配置写入POM。(例如,sourceEncoding始终为UTF-8,组织详细信息永远不会更改)。为了避免复制粘贴配置块,我创建了自己的标准“父”POM,可以为每个项目扩展 我也有很多工具,我在我工作的每个Java项目中都使用这些工具(例如checkstyle、PMD等),所以我已经将每个工具的插件添加到我的标准父pom中 PMD(和其他一些工具)有一个有趣的问题——它们需要一组配置文件才能正确运行。由于Maven更喜欢使用“每个模块一
<My Template>
|--- Config Files
\--- Parent Pom
|---配置文件
\---母体聚甲醛
- 我的模板:是一个由maven控制的项目,有两个模块
- 配置文件:是一个maven模块,它将PMD配置文件捆绑到ZIP中,并将其部署到maven repo
- 父Pom:是我所有的锅炉板代码。它依赖于“配置文件”,设置为从ZIP文件中提取配置
<dependency>
<groupId>org.my-org</groupId>
<artifactId>config-files</artifactId>
<version>${project.version}</version>
<type>zip</type>
<scope>test</scope>
</dependency>
org.my-org
配置文件
${project.version}
拉链
测试
问题:当我启动我的应用程序(比如0.0.1版)时,我使用“父Pom”作为我的父Pom。Maven将计算项目的有效POM,${project.version}将被解释为0.0.1(应用程序版本),而不是1.2.3(父POM版本)。Maven随后无法找到配置文件
问题:我如何告诉Maven“给我POM xxx的版本”
我真正不想做的是创建与${project.version}同步的附加属性,因为我可以保证,当我们为发布而升级POM时,会忘记更新它 你可以做几件事 您可以使用
${project.parent.version}
而不是${project.version}
但更好的方法可能是在父pom中定义pluginManagement
和/或dependencyManagement
——使用适当的版本和配置。在子项目中,您只需“使用”依赖项中的“托管”版本/配置或构建/插件
,而不指定具体的版本或配置
例如,可以看到在开源项目中广泛使用的POM。Hi@lexicore,
${project.parent.version}
很好地完成了这项工作。我的计划是使用这个变量定义一个属性,然后在设置pluginManagement