如何获得Maven本地仓库的位置?


81

有没有办法获取Maven本地仓库的位置?

使用以下命令,您可以强制Maven使用特定的设置文件:

 mvn -s < path to settings file >

我知道您可以编辑settings.xml文件来设置存储库位置,但是我可以通过一些Maven命令获得当前的默认值吗?

Answers:


121

如果只需要本地存储库,请尝试以下操作:

mvn help:evaluate -Dexpression=settings.localRepository | grep -v '\[INFO\]'

编辑

几年后,我将重新讨论这一问题,因为最新版本的Maven帮助插件为该evaluate目标引入了一个有用的参数,该参数forceStdout使我们无需grep输出即可:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

2
我认为您打算使用| grep -v '\[INFO\]' regex有讨厌的副作用。
kubanczyk

这两个版本都对我有用,“讨厌的副作用”是什么意思?
adutra

3
@adutra您的正则表达式指定一个由大写字母I,N,F和O组成的匹配组。因此它将匹配以下任一行:INFO,OFNI,I,F,N等。试试看echo -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
pmr

3
如果您有Maven警告或下载依赖项,则此方法将无效。以下grep(用于搜索绝对文件路径)应该在unix和Windows上均可以工作:mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
SiXoS

您的@SiXoS也不起作用,在我的情况下,当[INFO]扫描项目时,mvn发出警告....当输出被grepped时没有任何匹配。
Sajuuk

50

是的,您可以使用-X--debug选项获得它,例如mvn -X

...
[DEBUG] Reading global settings from C:\Maven\conf\settings.xml
[DEBUG] Reading user settings from C:\segphault\.m2\settings.xml
[DEBUG] Using local repository at C:\Repo
...

38

Maven帮助插件将显示本地设置,包括本地存储库路径。

您需要以下命令:

mvn help:effective-settings

输出将以XML格式显示设置。查找localRepository元素:

<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>

如果它发出警告,则输出将不是XML格式。
Sajuuk

19

在此期间,您可以通过以下更简单的方式进行操作:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

您还可以直接使用它来分配该shell变量,如下所示:

RESULT=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)

重要说明:请使用最新版本的Maven,当然还要使用最新版本的Maven-help-plugin ...

这将包含结果而无需换行等。


该答案应为公认的答案,因为它提供的解决方案比到目前为止提出的任何其他解决方案都更简洁。
Zartc

这至少在某些平台/配置上已被打破。对我来说(fc 28,Maven 3.5.2),-q使其不产生任何输出,尽管没有-q,该属性存在,但必须将其删除。
Pawel Veselov '18年


5

对于Windows用户

通常在:中C:\Users\USER_NAME\.m2\repository
但是,该mvn help:effective-settings命令肯定会在响应xml中显示本地路径。


0

您可以通过使用-X选项启用调试模式并找到提及正在使用的本地存储库的行来实现此目的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.