Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在pom.xml和settings.xml中覆盖Maven属性的顺序是什么?_Java_Maven - Fatal编程技术网

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/local
settings.xml
属性也会击败它。 顺便说一句,global
settings.xml
在没有配置文件的情况下也会优于pom.xml属性

作为旁注: 对于
而言,逻辑略有不同:

  • 对于
    ,用户/本地设置的优先级高于全局设置
  • 但是,对于
    :pom-最高,然后是-本地,然后是-全局

您有相同id或不同id的配置文件吗?POM中的属性没有任何配置文件;settings.xml中的属性位于一个配置文件中,该配置文件的id不在其他地方使用。但是,如果您的属性在pom和settings.xml中具有相同的名称,则它们将被来自settings.xml文件的属性值覆盖。否则就不可能用配置文件覆盖属性。@khmarbaise正确-这是观察到的行为。我只想知道这种行为的定义/描述您答案中的链接和引用正是我想要的。@khmarbaise:场景是:我有一个项目,需要更改一些特定于开发人员站点的值,但是我不希望每个开发人员都有一个单独的配置文件。知道
-D
算什么吗?@Christian这似乎有最大的优先级,并且覆盖了所有内容,也就是说,应该排在列表的最后。Maven设置优先级的方式非常混乱和不一致。