背景:我大部分的Java项目有很多锅炉板配置的,我写出来了我的POM。 (例如,sourceEncoding始终是UTF-8,组织细节永远不会改变)。为了节省不得不复制粘贴配置块的功能,我创建了自己的标准“父”POM,可以扩展我的每个项目。我也在我工作的每个Java项目中使用了很多工具(例如checkstyle,PMD等),所以我已经将每个工具的插件添加到我的标准父pom中。Maven的:如何读取父POM版本
PMD(以及一些其他工具)有一个有趣的问题 - 他们需要一组配置文件才能正常工作。由于Maven的喜欢与“每个模块一个部署资源”的概念来工作,我已经创建了以下(简化)结构:
<My Template>
|--- Config Files
\--- Parent Pom
- 我的模板:是两个模块 行家控制项目
- 配置文件:是一个Maven模块捆绑的PMD配置文件成ZIP,并将其部署到一个Maven回购
- 父POM:是我所有的锅炉板代码。它的“配置文件”的依赖,并设置为从ZIP
到目前为止好提取配置....
的需求量的:“父POM”和“配置文件“一直是一起构建和部署的 - 即”Parent Pom“1.2.3版本只能用于”Config Files“1.2.3版本,所以当我在”Parent POM“中编写依赖项时,我需要做类似:
<dependency>
<groupId>org.my-org</groupId>
<artifactId>config-files</artifactId>
<version>${project.version}</version>
<type>zip</type>
<scope>test</scope>
</dependency>
问题:当我开始我的应用程序(假设版本为0.0.1)时,我使用“Parent Pom”作为我的父项。 Maven将计算项目的有效POM,$ {project.version}将被解释为0.0.1(应用程序版本),而不是1.2.3(父级POM版本)。 Maven然后无法找到配置文件。
问题:如何告诉Maven“给我POM xxx的版本”?
我真的不要做的是创建与$ {project.version}同步的其他属性,因为我可以保证我们会在发布POM的时候忘记更新它!
嗨@lexicore,'$ {project.parent.version}'很好地完成了这项工作。我的计划是使用这个变量定义一个属性,然后在设置'pluginManagement'时引用它 – Stormcloud