如何使用maven命令行来确定Maven正在拾取哪些settings.xml文件?
答案 0 :(得分:288)
使用-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
...
(我删除了原始目录名称)
答案 1 :(得分:161)
您对cletus'(正确)答案的评论意味着涉及多个Maven设置文件。
Maven始终使用一个或两个设置文件。始终需要($ {M2_HOME} /conf/settings.xml)中定义的全局设置。用户设置文件(在$ {user.home} /.m2 / settings.xml中定义)是可选的。用户设置中定义的任何设置都优先于相应的全局设置。
您可以从命令行覆盖全局和用户设置的位置,以下示例将全局设置设置为 c:\ global \ settings.xml ,并将用户设置设置为 C:\用户\的settings.xml :
mvn install --settings c:\user\settings.xml
--global-settings c:\global\settings.xml
目前,没有任何属性或方法可以确定Maven使用的用户和全局设置文件。要访问这些值,您必须修改MavenCli和/或DefaultMavenSettingsBuilder,以将文件位置注入已解析的Settings对象。
答案 2 :(得分:111)
答案 3 :(得分:35)
这是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
答案 4 :(得分:23)
全局的M2_HOME
环境变量。见Settings Reference:
中的
settings
元素settings.xml
文件包含元素 用于定义配置的值 Maven以各种方式执行,比如pom.xml
,但不应该 捆绑到任何特定项目,或 分发给观众。这些 包括诸如本地之类的值 存储库位置,备用远程 存储库服务器和身份验证 信息。有两个地方 settings.xml文件可能存在的位置:
- Maven安装:
$M2_HOME/conf/settings.xml
- 用户的安装:
${user.home}/.m2/settings.xml
答案 5 :(得分:23)
确定Maven是否正在使用所需的settings.xml的快速而脏的方法将使其xml无效并运行一些需要settings.xml的安全maven命令。
如果它读取此 settings.xml,则Maven会报告错误:“读取settings.xml错误...”
答案 6 :(得分:2)
如果您像我一样正在调试和浪费时间,这将提供包括密码在内的确切详细信息。 :P
mvn help:effective-settings -DshowPasswords=true
答案 7 :(得分:-1)
如果您想了解正在使用的Maven的settings.xml文件的路径(除了其他信息),请从命令行运行:
mvn --version