我如何使用maven命令行来确定Maven选择了哪个settings.xml文件?
我如何使用maven命令行来确定Maven选择了哪个settings.xml文件?
Answers:
使用-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
the former settings.xml are also called global settings, the latter settings.xml are referred to as user settings. If both files exists, their contents gets merged, with the user-specific settings.xml being dominant.
确定Maven是否正在使用所需的settings.xml的快速而肮脏的方法将使其XML无效,并运行一些需要settings.xml的安全maven命令。
如果读取此 settings.xml,则Maven报告错误:“读取settings.xml ...时出错”。