[英]What is the order of overwrite Maven properties in pom.xml and settings.xml?
今天我观察到,在规定的行家根据企业的性质settings.xml
覆盖一个在pom.xml
。
因为这只是观察,我不确定这是否完全正确。 所以我查找了参考文章或一些文章,但我没有找到关于覆盖在settings.xml
和pom.xml
使用相同名称定义的属性的行为的具体说明。
也许有人可以提供参考部分的链接(我可能会忽略)或可靠的文章/博客?
基于我认为的文档 ,很清楚哪一个优先于另一个(文档的摘录):
如果配置文件在设置中处于活动状态,则其值将覆盖POM或profiles.xml文件中任何等效的ID'd配置文件。
仅在Maven 2.2.1中,profiles.xml不再存在于Maven 3中,它受支持但不应使用。
我认为具有相同名称的属性在下一个序列中被覆盖(从最高到最低的上下文):
http://maven.apache.org/guides/introduction/introduction-to-profiles.html
因此, pom.xml
属性(每个项目)被具有相同名称的settings.xml
(每个用户)属性覆盖。
刚刚在我的maven 3.3.9上测试过它。
首先,如果我们讨论的是settings.xml,那么属性总是在配置文件中定义。 全局设置中的属性XML具有最高优先级,并且将覆盖用户settings.xml
和特定的pom.xml
, 除非配置文件之间存在名称冲突。
如果是这种情况,那就是在全局,用户设置以及pom.xml中都有一个具有相同id的配置文件 ,user / local settings.xml就是老板。 即使pom.xml
中的属性不在配置文件中,来自具有相同名称的活动配置文件的user / local settings.xml
属性也会超过它。 顺便说一下,全局settings.xml
也会在没有配置文件的情况下击败pom.xml属性。
作为旁注:对于<repositories>
和<mirrors>
,逻辑略有不同:
<mirrors>
用户/本地设置的优先级高于全局。 <repositories>
:pom - 最高,然后 - 本地,然后 - 全局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.