如何永久指定.m2文件夹或settings.xml的备用位置?

问题描述 投票:51回答:4

我正在使用Maven 3.0,我的.m2文件夹位置是C:\Users\me\.m2

但是,我没有该文件夹的写入权限,但我想从settings.xml中定义的存储库位置更改存储库位置。

由于访问受限,我无法编辑settings.xml来更改存储库位置。

如何覆盖我的settings.xml的值 - 或更改.m2文件夹的默认位置 - 而无需编辑我的C:\Users\me\.m2\conf\settings.xml文件?

maven
4个回答
72
投票

您需要将此行添加到settings.xml中(如果已经存在,则取消注释)。

<localRepository>C:\Users\me\.m2\repo</localRepository>

也可以使用mvn clean install -gs C:\Users\me\.m2\settings.xml运行你的命令 - 这个参数将强制maven使用不同的settings.xml然后是默认值(在$HOME/.m2/settings.xml中)


48
投票

有趣的是,其他答案如何忽略了你无法写入该文件的事实......

我想到了一些解决方法可以帮助使用任意的C:\redirected\settings.xml,并且像往常一样快乐地使用mvn命令。

mvn alias

在Unix shell(或Cygwin)中,您可以创建

alias mvn='mvn --global-settings "C:\redirected\settings.xml"'

所以,当你从任何地方调用mvn blah blah时,配置会被“自动”选中。 如果你想要这个,请参阅How to create alias in cmd?,但没有Unix shell。

mvn wrapper

配置您的环境,以便在命令行中键入时将mvn解析为包装脚本:

  • 从你的MVN_HOME/bin删除你的M2_HOME/binPATH所以mvn不再解决。
  • 将文件夹添加到PATH(或使用现有文件夹)
  • 在该文件夹中创建一个包含内容的mvn.bat文件: call C:\your\path\to\maven\bin\mvn.bat --global-settings "C:\redirected\settings.xml" %*

注意:如果您希望某些项目的行为不同,您可以在与mvn.bat相同的文件夹中创建pom.xml,因此当您运行普通的mvn时,它会解析为本地项目。

随时使用where mvn来检查它是如何解析的,第一个将在你键入mvn时运行。

mvn.bat hack

如果您对C:\your\path\to\maven\bin\mvn.bat有写入权限,请编辑该文件并将set MAVEN_CMD_LINE_ARG添加到:runm2部分:

@REM Start MAVEN2
:runm2
set MAVEN_CMD_LINE_ARGS=--global-settings "C:\redirected\settings.xml" %MAVEN_CMD_LINE_ARGS%
set CLASSWORLDS_LAUNCHER=...

mvn.sh hack

为了完整性,您可以通过更改C:\your\path\to\maven\bin\mvn命令来更改exec "$JAVACMD" shell脚本

${CLASSWORLDS_LAUNCHER} "$@"

部分到

${CLASSWORLDS_LAUNCHER} --global-settings "C:\redirected\settings.xml" "$@"

Suggestion/Rant

作为一个IT人员,有趣的是你无法访问自己的主文件夹,对我而言,这构成了你正在为之工作的公司的无能:这相当于雇佣某人进行软件开发,但不提供是否可以使用notepad.exe或Microsoft Word以外的任何内容来编辑源文件。我建议您联系您的服务台或管理员,并至少请求对该特定文件的写访问权限,以便您可以更改本地存储库的路径。

免责声明:这些都没有针对这个特定的用例进行测试,但我之前成功地将所有这些用于各种其他软件。


16
投票

以下是Maven软件中默认情况下在MAVEN_HOME \ conf \ settings.xml中的配置。

<settings>
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

在此配置下添加以下行,将满足要求。

<localRepository>custom_path</localRepository>

例如:<localRepository>D:/MYNAME/settings/.m2/repository</localRepository>


7
投票

您可以在m2.conf文件中更改.m2目录的默认位置。它驻留在您的maven安装目录中。

添加修改此行

m2.conf

set maven.home C:\Users\me\.m2


0
投票

没有人建议这样做,但您可以使用-Dmaven.local.repo命令行参数来更改存储库所在的位置。此外,根据settings.xml文档,您可以设置-Dmaven.home查找settings.xml文件。

见:Settings.xml documentation

© www.soinside.com 2019 - 2024. All rights reserved.