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

时间:2013-05-20 12:21:05

标签: maven

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

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

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

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

5 个答案:

答案 0 :(得分:69)

您需要将此行添加到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

答案 1 :(得分:47)

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

我想到了一些解决方法可以帮助您使用任意C:\redirected\settings.xml照常使用mvn命令

mvn别名

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

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

所以,当您从任何地方拨打mvn blah blah时,“自动”选择配置 如果需要,请参阅How to create alias in cmd?,但没有Unix shell。

mvn包装器

配置您的环境,以便在命令行中键入时将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时,它会解析为本地项目。 / p>

随时使用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" "$@"

建议/咆哮

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

免责声明 :这些都没有针对此特定用例进行测试,但我之前已成功使用其他所有软件。

答案 2 :(得分:15)

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

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

答案 3 :(得分:7)

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

中添加修改此行

<强> m2.conf

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

答案 4 :(得分:0)

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

请参阅:Settings.xml documentation