332

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

4

7 回答 7

396

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

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

于 2012-05-10T07:18:31.617 回答
183

您对 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

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

于 2009-08-11T21:04:24.170 回答
169

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

mvn help:effective-settings

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

于 2012-11-07T17:23:31.610 回答
44

这是 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
    
  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
    
于 2009-08-11T21:11:58.197 回答
30

M2_HOME全局环境变量。请参阅设置参考

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

  • Maven 安装:$M2_HOME/conf/settings.xml
  • 用户安装:${user.home}/.m2/settings.xml
于 2009-08-11T15:47:09.007 回答
27

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

如果它读取了这个settings.xml,那么 Maven 会报告一个错误:“Error reading settings.xml...”

于 2009-09-17T14:03:30.063 回答
8

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

mvn help:effective-settings -DshowPasswords=true
于 2021-02-27T07:28:13.870 回答