我對多模塊項目中的屬性有疑問。多模塊項目中的Maven屬性重置爲默認值
考慮以下3級項目struture:
project
+- pom.xml (packaging: pom) //referred to as super-pom
+- module_group
+- pom.xml (packaging: pom) //referred to as group-pom
+- module
+-pom.xml (packaging: jar) //referred to as module-pom
在超級POM我定義屬性修訂其得到默認值「未知」。
此外我聲明和使用buildnumber-maven-plugin
它被配置爲獲得svn修訂並將其放入修訂版。我的配置maven-jar-plugin
將該屬性寫入清單。
在module-pom中,我聲明使用buildnumber-maven-plugin
以便實際執行。
這一切都可以直接構建模塊,即僅執行module-pom。 清單包含由控制檯中打印的buildnumber-maven-plugin
報告的修訂。
但是,如果我執行超聚甲醛或組-POM的默認值修訂被寫入清單,雖然buildnumber-maven-plugin
被執行,並獲取正確的版本(這之前打印到控制檯運行maven-jar-plugin
)。
所以我有這種感覺,我在多模塊項目中遺失了一些屬性繼承。
有沒有人有一個想法這裏有什麼可能是錯的?或者任何人都可以指出我對這些情況下的屬性如何處理的描述(不幸的是,我還沒有設法找到一個好的描述)?
更新
我做了一些研究和一些測試與調試輸出(-X
選項),並從我迄今發現跑,我想我的問題是這樣的:
1)在解析pom中使用的屬性被替換爲它們的值。
考慮這種部分POM:
<!-- declare the property default value -->
<properties>
<revision>default</revision>
</properties>
...
<!-- use the property -->
<someconfig>${revision}</someconfig>
的POM被評估之後,它似乎導致在將對應於這樣的狀態:
<properties>
<revision>default</revision>
</properties>
...
<!-- The property seems to be "statically" replaced -->
<someconfig>default</someconfig>
2),其設定所述實際插件財產價值運行後,即使在validate
階段。
因此屬性本身被正確設置爲新值,但不再被讀取。
3)使用<someconfig>
插件(在我的情況下,它會是maven-jar-plugin
)現在<someconfig>default</someconfig>
下運行,因此它不讀取revision
可言。
任何人都可以證實這一點嗎?