[英]Maven: How to read the Parent POM version
背景:我的大部分 Java 項目都有很多樣板配置,我最終將這些配置寫入我的 POM。 (例如 sourceEncoding 總是 UTF-8,組織細節永遠不會改變)。 為了避免復制粘貼配置塊,我創建了自己的標准“父”POM,我可以為我的每個項目擴展。
我也有許多在我從事的每個 Java 項目中使用的工具(例如 checkstyle、PMD 等),因此我已將每個工具的插件添加到我的標准父 pom 中。
PMD(和其他一些工具)有一個有趣的問題——它們需要一組配置文件才能正確運行。 由於 Maven 更喜歡使用“每個模塊一個可部署資源”的概念,因此我創建了以下(簡化的)結構:
<My Template>
|--- Config Files
\--- Parent Pom
到目前為止一切順利......
要求: “父 Pom”和“配置文件”總是一起構建和部署 - 即“父 Pom”版本 1.2.3 只能與“配置文件”版本 1.2.3 一起使用,所以當我在“父 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 時我們會忘記更新它!
您可以做一些事情。
您可以使用${project.parent.version}
而不是${project.version}
。
但可能更好的方法是在您的父 pom 中定義pluginManagement
和/或dependencyManagement
- 使用適當的版本和配置。 在您的子項目中,您只需“使用” dependencies
或build/plugins
的“托管”版本/配置, dependencies
無需指定具體版本或配置。
例如,參見開源項目中廣泛使用的org.sonatype.oss:oss-parent
POM。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.