33

How do I globally change the location of maven's .m2 directory?

Maven uses ${user.home}/.m2 for it's settings, repository cache, etc.

I know that I can:

  • point to a different dir for the repository cache (by changing the localRepository attribute in my global config file), but not for anything else (settings.xml, for instance).
  • Use the -s CLI option, but I'd have to do that every time I use maven.

But ideally, I'd like a global solution. Intuitively that should be possible..

I'd like to do this because my company sets my ${user.home} to a shared drive which is prone to network issues.

4

4 回答 4

64

使用MAVEN_OPTS环境变量设置存储库的位置。在你的shell启动中设置,不用每次都放在命令行中。

export MAVEN_OPTS="-Dmaven.repo.local=/path/to/repository"

你说你想改变.m2文件settings.xmlrepository目录。您要设置M2_HOME环境变量。Maven设置文档说它控制 Maven 查找. settings.xml从那里,您可以控制存储库位置等。

于 2013-05-16T15:39:40.077 回答
14

最好的选择是在使用 Maven 指向计算机上的本地文件夹之前,先在 user.home 中创建 .m2 作为符号链接。

否则,您可以为 mvn 创建一个名为 mymvn (或 m3 或其他)的 shell 别名,该别名传入 -s 以及本地 repo 位置。

于 2013-05-16T15:50:10.557 回答
-2

另一个用例,但如果您使用的是 Jenkins,您可以设置Use private Maven repository标志,Jenkins 会为您完成。

选中此选项后,Jenkins 将告诉 Maven 使用 $WORKSPACE/.repository 作为本地 Maven 存储库。这意味着每个作业都将获得自己独立的 Maven 存储库。

在此处输入图像描述

于 2018-05-01T14:40:59.170 回答
-3

您需要找到您的 settings.xml 文件,然后编辑<localRepository>/path/to/local/repo</localRepository>

于 2015-07-22T08:26:55.720 回答