繁体   English   中英

在pom.xml和settings.xml中覆盖Maven属性的顺序是什么?

[英]What is the order of overwrite Maven properties in pom.xml and settings.xml?

今天我观察到,在规定的行家根据企业的性质settings.xml覆盖一个在pom.xml

因为这只是观察,我不确定这是否完全正确。 所以我查找了参考文章或一些文章,但我没有找到关于覆盖在settings.xmlpom.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM