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.