背景:我大部分的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