Jak zdobyć lokację lokalnego repozytorium Maven?

84

Czy istnieje sposób na uzyskanie lokalizacji lokalnego repozytorium Maven?

Za pomocą następującego polecenia możesz zmusić Mavena do korzystania z określonego pliku ustawień:

 mvn -s < path to settings file >

Wiem, że możesz edytować settings.xmlplik, aby ustawić lokalizację repozytorium, ale czy mogę uzyskać bieżącą wartość domyślną za pomocą jakiegoś polecenia Maven?

code-gijoe
źródło

Odpowiedzi:

126

Jeśli potrzebujesz tylko lokalnego repozytorium, spróbuj tego:

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

EDYTOWAĆ

Wracam do tego po latach, ponieważ ostatnie wersje wtyczki pomocy Maven wprowadziły przydatny parametr dla evaluatecelu zwanego, forceStdoutktóry pozwala nam wyeliminować potrzebę grepowania danych wyjściowych:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
adutra
źródło
2
Myślę, że zamierzałeś, aby | grep -v '\[INFO\]' Twoje wyrażenie regularne miało nieprzyjemne skutki uboczne.
kubańczyk
obie wersje działają dla mnie, co masz na myśli mówiąc „nieprzyjemne efekty uboczne”?
adutra
3
@adutra Twoje wyrażenie regularne określa grupę dopasowania składającą się z wielkich liter I, N, F i O. Dopasuje więc dowolną z tych linii: INFO, OFNI, I, F, N itd. Wypróbujecho -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
pmr
3
To nie zadziała, jeśli masz ostrzeżenia maven lub pobiera zależności. Następujący grep, który wyszukuje bezwzględne ścieżki do plików, powinien działać zarówno w mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
systemie
@SiXoS twój również nie działał, w moim przypadku mvn wyrzucił ostrzeżenia, gdy [INFO] Skanowanie w poszukiwaniu projektów ... i nie pasowało do niczego, gdy wyjście zostało grepowane.
Sajuuk,
51

Tak, możesz to uzyskać z opcją -Xlub --debug, npmvn -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
...
Justin Garrick
źródło
40

Wtyczka Maven Help pokaże ustawienia lokalne, w tym lokalną ścieżkę repozytorium.

Chcesz polecenie:

mvn help:effective-settings

Dane wyjściowe pokażą ustawienia w formacie XML. Poszukaj elementu localRepository:

<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>
JRS
źródło
wygląda na to, że jeśli zgłosi ostrzeżenie, dane wyjściowe nie będą w formacie XML.
Sajuuk,
20

W międzyczasie możesz to zrobić w prostszy sposób:

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

Możesz również bezpośrednio użyć tego do przypisania tej zmiennej powłoki, takiej jak ta:

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

Ważna uwaga: użyj najnowszej wersji Mavena i oczywiście najnowszej wersji wtyczki maven-help-plugin ...

Będzie zawierał wynik bez nowej linii itp.

khmarbaise
źródło
Ta odpowiedź powinna być odpowiedzią akceptowaną, ponieważ daje rozwiązanie, które daje czystszy wynik niż jakiekolwiek inne proponowane do tej pory rozwiązanie.
Zartc
Jest to zepsute na co najmniej niektórych platformach / konfiguracjach. Dla mnie (fc 28, Maven 3.5.2) -q powoduje, że nie daje wyniku, chociaż bez -q właściwość istnieje, ale musi zostać usunięta.
Pawel Veselov
5

Powinien znajdować się w katalogu /home/.m2, folder prawdopodobnie jest ukryty. Musisz więc nacisnąć Ctrl + H, aby zobaczyć ukryte foldery.

Aboozar Rajabi
źródło
4

Dla użytkowników systemu Windows

Zazwyczaj jest to w: C:\Users\USER_NAME\.m2\repository.
Jednak mvn help:effective-settingspolecenie z pewnością pokaże lokalną ścieżkę w odpowiedzi xml.

Shubham Pandey
źródło
Bardziej ogólne: ${user.home}/.m2/repositoryjest wartością domyślną, którą można zastąpić w pliku settings.xml . mvn help:effective-settings został wspomniany w odpowiedzi tutaj ponad 6 lat wcześniej: stackoverflow.com/a/6670563/1744774 .
Gerold Broser
-1

Możesz to osiągnąć, włączając tryb debugowania za pomocą -Xopcji i znajdź wiersz wspominający o używanym lokalnym repozytorium.

Harshit Sharma
źródło
Wspomniano o tym w odpowiedzi tutaj ponad 8 lat wcześniej: stackoverflow.com/a/5916233/1744774 .
Gerold Broser