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

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

388673 次浏览

全局变量的M2_HOME环境变量。看到设置参考:

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

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

您对cletus(正确)回答的评论暗示涉及多个Maven设置文件。

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

你可以从命令行覆盖全局和用户设置的位置,下面的例子将全局设置设置为c: \ \ settings.xml全球,用户设置为c: \ \ settings.xml用户:

mvn install --settings c:\user\settings.xml
--global-settings c:\global\settings.xml

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

这是Maven的配置文件。它可以在两个级别上指定:

    <李> < p >用户级别。xml文件为单个用户提供配置, 并且通常在${user.home}/.m2/settings.xml中提供
              NOTE: This location can be overridden with the CLI option:
    
    
    -s /path/to/user/settings.xml
    
  1. Global Level. This settings.xml file provides configuration for all Maven users on a machine (assuming they're all using the same Maven installation). It's normally provided in ${maven.home}/conf/settings.xml.

              NOTE: This location can be overridden with the CLI option:
    
    
    -gs /path/to/global/settings.xml
    

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

如果它读取 settings.xml,则Maven报告一个错误:"读取settings.xml错误…" .xml

使用-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
...

(原来的目录名称被我删除了)

你可以使用Maven帮助插件来告诉你用户和全局设置文件的内容。

mvn help:effective-settings

将要求maven吐出结合全局和用户设置

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

mvn help:effective-settings -DshowPasswords=true