84

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

但是,我没有对该文件夹的写入权限,但我想将存储库位置从settings.xml.

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

如何在不编辑文件的情况下覆盖我的值settings.xml或更改文件夹的默认位置?.m2C:\Users\me\.m2\conf\settings.xml

4

6 回答 6

103

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

于 2013-05-20T12:41:29.970 回答
62

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

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

mvn别名

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

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

因此,当您mvn blah blah从任何地方拨打电话时,配置会“自动”被拾取。
请参阅如何在其中创建别名cmd如果你想要这个,但没有 Unix shell。

mvn包装

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

  • 删除你的MVN_HOME/binM2_HOME/bin从你的PATH所以mvn不再解决。
  • 添加文件夹PATH(或使用现有文件夹)
  • 在该文件夹中创建一个mvn.bat包含内容的文件:

    call C:\your\path\to\maven\bin\mvn.bat --global-settings "C:\redirected\settings.xml" %*
    

注意:如果您希望某些项目的行为有所不同,您可以mvn.bat在同一个文件夹中创建,pom.xml这样当您运行 plain 时mvn,它会解析为本地项目。

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

mvn.bat黑客

如果您对 具有写入权限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黑客

为了完整起见,您也可以C:\your\path\to\maven\bin\mvn通过更改exec "$JAVACMD"命令的

${CLASSWORLDS_LAUNCHER} "$@"

部分到

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

建议/咆哮

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

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

于 2014-12-16T11:06:52.173 回答
38

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

请参阅:Settings.xml 文档

于 2019-07-26T16:13:33.867 回答
21

下面是 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>

于 2014-06-26T14:39:38.703 回答
8

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

添加修改这一行

m2.conf

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

于 2016-02-23T09:18:30.510 回答
0

different-settings.xml您可以在部署项目时指向 a 。从项目文件夹部署时,您可以使用相对路径返回主文件夹

mvn clean deploy -s ../../.m2/different-settings.xml
于 2022-02-01T09:03:45.937 回答