今天我觀察到在settings.xml
中定義的maven proprties覆蓋了pom.xml
中的那個。在pom.xml和settings.xml中覆蓋Maven屬性的順序是什麼?
因爲這只是一個觀察,我不確定這是否完全正確。因此,我查找了參考文獻或某篇文章,但沒有發現有關覆蓋settings.xml
和pom.xml
中使用相同名稱定義屬性的行爲的具體說明。
也許有人可以提供一個鏈接到參考部分(我可能忽略)或可靠的文章/博客?
今天我觀察到在settings.xml
中定義的maven proprties覆蓋了pom.xml
中的那個。在pom.xml和settings.xml中覆蓋Maven屬性的順序是什麼?
因爲這只是一個觀察,我不確定這是否完全正確。因此,我查找了參考文獻或某篇文章,但沒有發現有關覆蓋settings.xml
和pom.xml
中使用相同名稱定義屬性的行爲的具體說明。
也許有人可以提供一個鏈接到參考部分(我可能忽略)或可靠的文章/博客?
基於在我看來documentation很清楚哪一個具有優先於其他(與文檔的節選):
如果配置文件是活動的設置,它的值將覆蓋任何 等效ID 'd配置文件在POM或profiles.xml文件中。
profiles.xml在Maven 3中不存在,只在Maven 2.2.1中支持,但不應該使用。
我想以同樣名稱的屬性在接下來的順序被覆蓋(從最高到最低的情況下):
http://maven.apache.org/guides/introduction/introduction-to-profiles.html
因此,pom.xml
屬性(每個項目)被具有相同名稱的settings.xml
(每個用戶)屬性覆蓋。
任何想法是什麼'-D'? – Christian
剛剛在我的maven 3.3.9上測試過它。
首先,屬性始終在配置文件中定義,如果我們談論的settings.xml。從全局設置XML 屬性具有最高優先級,將覆蓋用戶settings.xml
和特定pom.xml
,除非有型材之間的名稱衝突。
如果是這樣的話,那就是在全局,用戶設置以及pom.xml中有一個配置文件,其ID爲,user/local settings.xml是老闆。 即使pom.xml
屬性不配置文件,用戶/本地settings.xml
財產坐在裏面從具有相同名稱會戰勝它的情景模式。 順便提一下,全局settings.xml
也會在沒有配置文件的情況下擊敗pom.xml屬性。
作爲一個方面說明: 爲<repositories>
和<mirrors>
邏輯略有不同:
<mirrors>
具有更高的優先級。<repositories>
:pom - 最高,然後 - 本地,然後 - 全局。
你有一個相同的ID或ID不同的個人資料? – khmarbaise
POM中的屬性沒有任何配置文件; settings.xml中的屬性位於配置文件中,其id不會在其他位置使用。 – Ralph
但是,如果您的屬性在pom以及settings.xml中具有相同的名稱,那麼它們將被來自settings.xml文件的值覆蓋。否則,將無法通過配置文件覆蓋屬性。 – khmarbaise