Wie erhalte ich den lokalen Repo-Standort in Maven?

81

Gibt es eine Möglichkeit, den lokalen Repo-Standort in Maven zu ermitteln?

Mit dem folgenden Befehl können Sie Maven zwingen, eine bestimmte Einstellungsdatei zu verwenden:

 mvn -s < path to settings file >

Ich weiß, dass Sie eine settings.xmlDatei bearbeiten können, um einen Repository-Speicherort festzulegen, aber kann ich mit einem Maven-Befehl den aktuellen Standardwert abrufen?

Code-Gijoe
quelle

Antworten:

119

Wenn Sie nur das lokale Repo möchten, versuchen Sie Folgendes:

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

BEARBEITEN

Ich werde dies nach Jahren noch einmal wiederholen, da neuere Versionen des Maven-Hilfe-Plugins einen nützlichen Parameter für das evaluategenannte Ziel eingeführt haben forceStdout, mit dem wir die Notwendigkeit beseitigen können, die Ausgabe zu überprüfen:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
Adutra
quelle
2
Ich denke, Sie beabsichtigten, | grep -v '\[INFO\]' Ihre Regex hat böse Nebenwirkungen.
Kubanczyk
beide Versionen funktionieren für mich, was meinst du mit "bösen Nebenwirkungen"?
Adutra
3
@adutra Ihre Regex gibt eine Übereinstimmungsgruppe an, die aus den Großbuchstaben I, N, F und O besteht. Sie stimmt also mit einer dieser Zeilen überein: INFO, OFNI, I, F, N usw. Probieren Sie es ausecho -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
pmr
3
Dies funktioniert nicht, wenn Sie Maven-Warnungen haben oder Abhängigkeiten herunterladen. Das folgende grep, das nach absoluten Dateipfaden sucht, sollte sowohl unter Unix als auch unter Windows mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
funktionieren
@SiXoS Ihr hat auch nicht funktioniert, in meinem Fall hat mvn beim [INFO] Scannen nach Projekten Warnungen ausgegeben ... und hat nichts gefunden, wenn die Ausgabe gepackt wird.
Sajuuk
50

Ja, Sie können es mit der Option -Xoder erhalten --debug, zmvn -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
quelle
38

Das Maven-Hilfe-Plugin zeigt lokale Einstellungen an, einschließlich des lokalen Repository-Pfads.

Sie möchten den Befehl:

mvn help:effective-settings

Die Ausgabe zeigt Einstellungen im XML-Format. Suchen Sie nach dem localRepository-Element:

<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>
JRS
quelle
Es sieht so aus, als würde die Ausgabe nicht im XML-Format ausgegeben, wenn eine Warnung ausgegeben wird.
Sajuuk
19

In der Zwischenzeit können Sie dies auf einfachere Weise tun:

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

Sie können dies auch direkt verwenden, um dieser Shell-Variablen Folgendes zuzuweisen:

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

Wichtiger Hinweis: Verwenden Sie die neueste Version von Maven und natürlich die neueste Version des Maven-Hilfe-Plugins ...

Dies enthält das Ergebnis ohne neue Zeile usw.

khmarbaise
quelle
Diese Antwort sollte die akzeptierte Antwort sein, da sie eine Lösung liefert, die ein saubereres Ergebnis liefert als jede andere bisher vorgeschlagene Lösung.
Zartc
Dies ist zumindest auf einigen Plattformen / Konfigurationen fehlerhaft. Für mich (fc 28, Maven 3.5.2) führt -q dazu, dass keine Ausgabe ausgegeben wird, obwohl die Eigenschaft ohne -q vorhanden ist, aber entfernt werden muss.
Pawel Veselov
5

Es sollte sich im Verzeichnis /home/.m2 befinden, der Ordner ist wahrscheinlich versteckt. Sie müssen also Strg + H drücken, um versteckte Ordner anzuzeigen.

Aboozar Rajabi
quelle
5

Für Windows-Benutzer

Normalerweise ist es in : C:\Users\USER_NAME\.m2\repository.
Der mvn help:effective-settingsBefehl zeigt jedoch sicherlich den lokalen Pfad in der Antwort-XML an.

Shubham Pandey
quelle
0

Sie können dies erreichen, indem Sie den Debug-Modus aktivieren, indem Sie die -XOption verwenden und die Zeile herausfinden, in der das verwendete lokale Repository angegeben ist.

Harshit Sharma
quelle