Java 在pom.xml和settings.xml中覆盖Maven属性的顺序是什么?
今天我发现Java 在pom.xml和settings.xml中覆盖Maven属性的顺序是什么?,java,maven,Java,Maven,今天我发现settings.xml中定义的maven属性覆盖了pom.xml中的属性 因为这只是一个观察,我不确定这是否完全正确。因此,我在寻找参考资料或某篇文章,但我没有找到关于覆盖settings.xml和pom.xml中使用相同名称定义的属性行为的具体说明 也许有人可以提供参考部分(我可能会忽略)或可靠文章/博客的链接?根据我的观点,很明显哪一个优先于另一个(文档摘录): 如果配置文件在“设置”中处于活动状态,则其值将覆盖任何设置 在POM或profiles.xml文件中等效地标识配置文件
settings.xml
中定义的maven属性覆盖了pom.xml
中的属性
因为这只是一个观察,我不确定这是否完全正确。因此,我在寻找参考资料或某篇文章,但我没有找到关于覆盖settings.xml
和pom.xml
中使用相同名称定义的属性行为的具体说明
也许有人可以提供参考部分(我可能会忽略)或可靠文章/博客的链接?根据我的观点,很明显哪一个优先于另一个(文档摘录):
如果配置文件在“设置”中处于活动状态,则其值将覆盖任何设置
在POM或profiles.xml文件中等效地标识配置文件
profiles.xml在Maven 3中不再存在,仅在Maven 2.2.1中受支持,但不应使用它。我认为具有相同名称的属性将在下一个序列中被覆盖(从最高到最低上下文):
- 全球的
- 配置文件描述符
- 每个项目
- 每用户
因此,
pom.xml
属性(每个项目)被具有相同名称的settings.xml
(每个用户)属性覆盖。刚刚在我的maven 3.3.9上对其进行了测试
首先,如果我们谈论settings.xml,属性总是在概要文件中定义的。
全局设置XML中的属性具有最高优先级,并且将覆盖用户设置.XML
和特定的pom.XML
,,除非配置文件之间存在名称冲突
如果是这种情况,那么在全局、用户设置以及pom.xml、user/local settings.xml中都有一个id相同的配置文件。
即使pom.xml
中的属性不在配置文件中,来自同名活动配置文件的user/localsettings.xml
属性也会击败它。
顺便说一句,globalsettings.xml
在没有配置文件的情况下也会优于pom.xml属性
作为旁注:
对于
和
而言,逻辑略有不同:
- 对于
,用户/本地设置的优先级高于全局设置 - 但是,对于
:pom-最高,然后是-本地,然后是-全局
-D
算什么吗?@Christian这似乎有最大的优先级,并且覆盖了所有内容,也就是说,应该排在列表的最后。Maven设置优先级的方式非常混乱和不一致。