Maven yerel depo konumu nasıl alınır?


84

Maven yerel depo yerini almanın bir yolu var mı?

Aşağıdaki komutu kullanarak Maven'i belirli bir ayar dosyasını kullanmaya zorlayabilirsiniz:

 mvn -s < path to settings file >

settings.xmlBir depo konumu ayarlamak için dosyayı düzenleyebileceğinizi biliyorum , ancak mevcut varsayılan değeri bazı Maven komutlarıyla alabilir miyim?

Yanıtlar:


126

Yalnızca yerel depoyu istiyorsanız, şunu deneyin:

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

DÜZENLE

Bunu yıllar sonra tekrar gözden geçiriyorum çünkü Maven yardım eklentisinin son sürümleri , çıktıyı büyütme ihtiyacını ortadan kaldırmamıza izin veren evaluateadı verilen hedef için yararlı bir parametre sundu forceStdout:

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

2
Sanırım | grep -v '\[INFO\]' normal ifadenizin kötü yan etkileri var.
kubanczyk

her iki versiyon da benim için çalışıyor, "kötü yan etkiler" ile neyi kastediyorsunuz?
adutra

3
@adutra Normal ifadeniz, I, N, F ve O büyük harf karakterlerinden oluşan bir eşleşme grubunu belirtir. Dolayısıyla, şu satırlardan biriyle eşleşecektir: INFO, OFNI, I, F, N vb. Deneyinecho -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
pmr

3
Bu, maven uyarılarınız varsa veya bağımlılıkları indiriyorsa çalışmayacaktır. Mutlak dosya yollarını arayan aşağıdaki grep, hem unix hem de Windows'ta çalışmalıdır:mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
SiXoS

@SiXoS sizinki de işe yaramadı, benim durumumda, mvn [BİLGİ] Projeler için taranırken .... uyarılar attı ve çıktı greplendiğinde hiçbir şey eşleşmedi.
Sajuuk

51

Evet, -Xveya --debugseçeneği ile alabilirsiniz , örneğinmvn -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 Yardım eklentisi, yerel depo yolu dahil olmak üzere yerel ayarları gösterecektir.

Şu komutu istiyorsunuz:

mvn help:effective-settings

Çıktı, ayarları XML biçiminde gösterecektir. LocalRepository öğesini arayın:

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

uyarı verirse, çıktı XML formatında olmayacak gibi görünüyor.
Sajuuk

20

Bu arada bunu daha basit bir şekilde yapabilirsiniz:

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

Bunu doğrudan bunun gibi bir kabuk değişkeni atamak için de kullanabilirsiniz:

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

Önemli not: Maven'in en son sürümünü ve elbette en son maven-help-eklenti sürümünü kullanın ...

Bu, sonucu yeni bir satır vs. olmadan içerecektir.


Bu cevap, şimdiye kadar önerilen diğer çözümlerden daha temiz bir sonuç veren bir çözüm sunduğu için kabul edilen cevap olmalıdır.
Zartc

Bu, en azından bazı platformlarda / konfigürasyonlarda bozulmuştur. Benim için (fc 28, Maven 3.5.2), -q hiçbir çıktı vermemesini sağlar, ancak -q olmadan özellik oradadır, ancak greplenmesi gerekir.
Pawel Veselov

5

/Home/.m2 dizininde olmalı, klasör muhtemelen gizlidir. Bu nedenle, gizli klasörleri görmek için Ctrl + H tuşlarına ihtiyacınız olacak.


4

Windows kullanıcıları için

Genellikle İçinde: C:\Users\USER_NAME\.m2\repository.
Ancak mvn help:effective-settingskomut, xml yanıtında yerel yolu kesinlikle gösterecektir.


Daha genel: settings.xml${user.home}/.m2/repository dosyasında geçersiz kılınabilen varsayılandır . 6 yıldan daha önce burada bir yanıtta bahsedilmiştir: stackoverflow.com/a/6670563/1744774 . mvn help:effective-settings
Gerold Broser

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.