有没有办法获取Maven本地存储库的位置?
使用以下命令,您可以强制Maven使用特定的设置文件:
mvn -s < path to settings file >
我知道你可以编辑 settings.xml
文件来设置存储库位置,但是我是否可以通过某些 Maven 命令获取当前默认值?如果你只想要本地仓库,请尝试以下操作:
mvn help:evaluate -Dexpression=settings.localRepository | grep -v '\[INFO\]'
编辑
我重新审视这个问题,因为最近的Maven帮助插件版本引入了一个有用的参数,用于evaluate
目标,称为forceStdout
,它允许我们无需使用grep命令来获取输出:
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
是的,你可以使用-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
...
Maven 帮助插件将显示本地设置,包括本地存储库路径。
您需要的命令是:
mvn help:effective-settings
输出将以 XML 格式显示设置。查找 localRepository 元素:
<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>
在此时此刻,你可以以更简单的方式完成这个任务:
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
RESULT=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
重要提示:使用最新版本的Maven和当然是最新版本的maven-help-plugin...
这将包含结果,没有换行等。
通常路径为:C:\Users\USER_NAME\.m2\repository
。
然而,mvn help:effective-settings
命令会在响应的xml中显示本地路径。
${user.home}/.m2/repository
是默认设置,可以在 settings.xml 中进行覆盖。 mvn help:effective-settings
在此之前已经在这里的一个答案中提到了超过6年:https://dev59.com/uG025IYBdhLWcg3wl3Em#6670563。 - Gerold Broser它应该在/home/.m2目录中,该文件夹可能是隐藏的。因此,您需要按Ctrl + H以查看隐藏文件夹。
| grep -v '\[INFO\]'
。你的正则表达式有不好的副作用。 - kubanczykecho -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
。 - pmrmvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
。 - SiXoS${user.home}/.m2/repository
或者$HOME/.m2/repository
,并使用符号链接指向我选择的位置。不值得花费精力去追踪设置文件。现在我使用SDKMAN
,所以使用默认设置非常简单。你帮助我找到了仓库的位置,所以我可以移动它。干得好! - will