Maven命令确定Maven正在使用哪个settings.xml文件

har*_*are 257 settings command-line maven-2 maven

如何使用maven命令行来确定Maven正在拾取哪些settings.xml文件?

小智 309

使用-X选项启动maven(调试)并检查输出的开头.应该是这样的:

...
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from c:\....\apache-maven-3.0.3\conf\settings.xml
[DEBUG] Reading user settings from c:\....\.m2\settings.xml
[DEBUG] Using local repository at C:\....\repository
...
Run Code Online (Sandbox Code Playgroud)

(我删除了原始目录名称)

  • 也许这不是在调试输出中,直到maven 3发布,但你的帖子大约2.5年后终于是我正在寻找的确切答案(抱歉6个月的延迟注意到它). (10认同)

Ric*_*ler 166

您对cletus(正确)答案的评论意味着涉及多个Maven设置文件.

Maven总是使用一个或两个设置文件.始终需要($ {M2_HOME} /conf/settings.xml)中定义的全局设置.用户设置文件(在$ {user.home} /.m2/settings.xml中定义)是可选的.用户设置中定义的任何设置都优先于相应的全局设置.

您可以从命令行覆盖全局和用户设置的位置,以下示例将全局设置设置为c:\ global\settings.xml,将用户设置设置为c:\ user\settings.xml:

mvn install --settings c:\user\settings.xml 
    --global-settings c:\global\settings.xml
Run Code Online (Sandbox Code Playgroud)

目前,没有任何属性或方法可以确定使用Maven的用户和全局设置文件.要访问这些值,您必须修改MavenCli和/或DefaultMavenSettingsBuilder,以将文件位置注入已解析的Settings对象.


ser*_*g10 124

您可以使用maven帮助插件告诉您用户的内容和全局设置文件.

mvn help:effective-settings
Run Code Online (Sandbox Code Playgroud)

将要求maven吐出合并的全局和用户设置.


fir*_*umb 40

这是Maven的配置文件.它可以指定为两个级别:

  1. 用户级别.此settings.xml文件为单个用户提供配置,通常在$ {user.home} /.m2/settings.xml中提供.

              NOTE: This location can be overridden with the CLI option:
    
              -s /path/to/user/settings.xml
    
    Run Code Online (Sandbox Code Playgroud)
  2. 全球水平.此settings.xml文件为计算机上的所有Maven用户提供配置(假设他们都使用相同的Maven安装).它通常在$ {maven.home} /conf/settings.xml中提供.

              NOTE: This location can be overridden with the CLI option:
    
              -gs /path/to/global/settings.xml
    
    Run Code Online (Sandbox Code Playgroud)


cle*_*tus 24

M2_HOME全球一个环境变量.请参见设置参考:

文件中的元素包含用于定义值的settings元素,这些 settings.xml值以各种方式配置Maven执行,例如pom.xml,但不应捆绑到任何特定项目,或分发给受众.这些包括诸如本地存储库位置,备用远程存储库服务器和身份验证信息之类的值.settings.xml文件可能存在两个位置:

  • Maven安装: $M2_HOME/conf/settings.xml
  • 用户的安装: ${user.home}/.m2/settings.xml

  • +1回答,Cletus.我认为值得提及"设置参考"链接中的下一行:"以前的settings.xml也称为全局设置,后者settings.xml称为用户设置.如果两个文件都存在,则它们的内容将被合并,用户特定的settings.xml占主导地位 (3认同)

top*_*hef 24

确定Maven是否正在使用所需settings.xml的快速而脏的方法将使其xml无效并运行一些需要settings.xml的安全maven命令.

如果它读取 settings.xml,则Maven会报告错误:"读取settings.xml时出错......"

  • 虽然Cletus的答案非常有用,但这个答案在最严格意义上更多的是我正在寻找的(鉴于Maven本身似乎缺少任何settings.xml文件报告机制) (3认同)

Ana*_*ips 5

如果您像我一样正在调试和浪费时间,这将提供包括密码在内的确切详细信息。:P

mvn help:effective-settings -DshowPasswords=true
Run Code Online (Sandbox Code Playgroud)