Как получить местоположение локального репо Maven?


84

Есть ли способ получить местоположение локального репо Maven?

Используя следующую команду, вы можете заставить Maven использовать определенный файл настроек:

 mvn -s < path to settings file >

Я знаю, что вы можете редактировать settings.xmlфайл, чтобы указать местоположение репозитория, но могу ли я получить текущее значение по умолчанию с помощью какой-нибудь команды Maven?

Ответы:


126

Если вам нужно только локальное репо, попробуйте следующее:

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\]' вашего регулярного выражения есть неприятные побочные эффекты.
— 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 03

@SiXoS ваш тоже не работал, в моем случае mvn выдавал предупреждения, когда [INFO] Scanning for projects ... и ничего не соответствовал, когда вывод получался grep.
— Sajuuk

51

Да, вы можете получить его с помощью опции -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
...

40

Плагин Maven Help покажет локальные настройки, включая путь к локальному репозиторию.

Вам нужна команда:

mvn help:effective-settings

На выходе будут отображаться настройки в формате XML. Найдите элемент localRepository:

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

похоже, что если он выдаст предупреждение, вывод не будет в формате XML.
— Sajuuk

20

А пока вы можете сделать это более простым способом:

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

Вы также можете напрямую использовать это, чтобы назначить эту переменную оболочки, например:

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

Важное примечание: используйте самую последнюю версию Maven и, конечно же, самую последнюю версию maven-help-plugin ...

Это будет содержать результат без новой строки и т. Д.


Этот ответ должен быть принятым ответом, поскольку он дает решение, которое дает более чистый результат, чем любое другое решение, предложенное до сих пор.
— Zartc 08

Это нарушено по крайней мере на некоторых платформах / конфигурациях. Для меня (fc 28, Maven 3.5.2) -q не дает вывода, хотя без -q свойство есть, но его нужно удалить.
— Павел Веселов

5

Он должен находиться в каталоге /home/.m2, вероятно, папка скрыта. Итак, вам нужно Ctrl + H, чтобы увидеть скрытые папки.


4

Для пользователей Windows

Обычно это в: C:\Users\USER_NAME\.m2\repository.
Однако mvn help:effective-settingsкоманда обязательно покажет локальный путь в ответе xml.


Более общий: ${user.home}/.m2/repositoryэто значение по умолчанию, которое можно переопределить в settings.xml . mvn help:effective-settings был упомянут в ответе здесь более 6 лет назад: stackoverflow.com/a/6670563/1744774 .
— Герольд Брозер,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.