今天我观察到在settings.xml
中定义的Maven属性会覆盖pom.xml
中的属性。
由于这只是一个观察结果,我并不确定这是否完全正确。因此,我正在寻找参考资料或一些文章,但是我没有找到任何关于在settings.xml
和pom.xml
中使用相同名称定义属性重写行为的具体说明。
也许有人可以提供参考部分的链接(我可能已经忽略了)或可靠的文章/博客?
今天我观察到在settings.xml
中定义的Maven属性会覆盖pom.xml
中的属性。
由于这只是一个观察结果,我并不确定这是否完全正确。因此,我正在寻找参考资料或一些文章,但是我没有找到任何关于在settings.xml
和pom.xml
中使用相同名称定义属性重写行为的具体说明。
也许有人可以提供参考部分的链接(我可能已经忽略了)或可靠的文章/博客?
根据文档,我认为很清楚哪个具有优先权(摘自文档):
如果从设置文件激活了配置文件,则其值将覆盖 POM 文件或 profiles.xml 文件中同名的配置文件。
Maven 3 中不再支持profiles.xml,仅在 Maven 2.2.1 中支持但不应使用。
pom.xml
属性(每个项目)将被settings.xml
(每个用户)具有相同名称的属性所覆盖。
http://maven.apache.org/guides/introduction/introduction-to-profiles.html
-D
是什么意思吗? - Christian我在我的maven 3.3.9上进行了测试。
首先,如果我们谈论settings.xml,属性总是在profiles中定义的。 全局settings XML中的属性具有最高优先级,并将覆盖用户settings.xml和特定的pom.xml,除非profiles之间存在名称冲突。
如果存在这种情况,即在全局、用户设置以及pom.xml中都有相同id的profile,则用户/本地settings.xml具有最高优先级。 即使pom.xml中的属性不在profile内,来自与其同名的活动profile的用户/本地settings.xml属性也会胜出。 顺便说一下,全局settings.xml也会击败没有profile的pom.xml属性。
顺带一提: 对于repositories和mirrors,逻辑略有不同:
<mirrors>
中用户/本地设置的优先级高于全局设置。<repositories>
:pom 的优先级最高,其次是本地设置,再次是全局设置。