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?

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

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
...

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>

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.


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.


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.