如何使用 maven 命令行来确定 Maven 正在拾取哪个 settings.xml 文件?
7 回答
使用 -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
...
(原来的目录名被我删除了)
您对 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 对象。
这是 Maven 的配置文件。它可以在两个级别上指定:
用户级别。此 settings.xml 文件为单个用户提供配置,通常在 ${user.home}/.m2/settings.xml 中提供。
NOTE: This location can be overridden with the CLI option: -s /path/to/user/settings.xml
全球水平。这个 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
M2_HOME
全局环境变量。请参阅设置参考:
文件中的
settings
元素settings.xml
包含用于定义以各种方式配置 Maven 执行的值的元素,例如pom.xml
,但不应捆绑到任何特定项目或分发给受众。其中包括本地存储库位置、备用远程存储库服务器和身份验证信息等值。settings.xml 文件可能存在两个位置:
- Maven 安装:
$M2_HOME/conf/settings.xml
- 用户安装:
${user.home}/.m2/settings.xml
确定 Maven 是否使用所需的 settings.xml 的快速而肮脏的方法将使其 xml 无效并运行一些需要 settings.xml 的安全 maven 命令。
如果它读取了这个settings.xml,那么 Maven 会报告一个错误:“Error reading settings.xml...”
如果您像我一样调试并浪费时间,这将提供包括密码在内的确切详细信息。:P
mvn help:effective-settings -DshowPasswords=true