Maven başka bir dizinden nasıl çalıştırılır (cd'den proje dizinine)?


249

Diyelim ki benim maven projem var /some/location/projectve şu anki konum /another/location/maven derlemesini proje konumuna geçmeden nasıl çalıştırabilirim cd /some/location/project?


4
@khmarbaise - Bazı kabuk komut dosyalarını kullanarak derleme ve dağıtımları otomatikleştirmeye çalışıyorum ve dir değiştirmek için her zaman cd kullanmak düz değil.
Ali Shakiba

@khmarbaise - bir dizinde veya yakınında birden çok dosya veya klasöre başvurmak isteyebilirsiniz, ancak pom'nuz ve atıfta bulunduğu dosyalar başka bir klasördedir.
jyoungdev

Yanıtlar:


432

Parametreyi kullanabilir -fve pom dosyanızın yolunu belirtebilirsiniz, örn.mvn -f /path/to/pom.xml

Bu, maven'i /path/toçalışma dizini içindeymiş gibi çalıştırır .


39
Hayır, -f Maven'i bu özel pom ile başlatır ve tanımı gereği pom'un bulunduğu dizin Maven'in çalışma dizinidir. Bunu alt dizinlerde belirli modüller oluşturmak için CI-Sunucumda kullanıyorum ve çalıştığından emin olabilirim.
dunni

15
Göreli yollar için bir nokta kullanın. ör../path/pom.xml
Snekse

3
Dunni'nin dediği gibi, bu işe yaramıyor. Geçerli dir nerede olduğunuzdur. Sadece başka bir yerde bir pom kullanıyorsun. Maven bunu desteklemiyor.
sis

1
java.lang.IllegalArgumentException: 'Dizin' parametresi bir dizin değil
Damir Olejar 7:17 '

Projelerimin çoğu için çalışıyor. Ne yazık ki, çalışma eklentisi yapılandırılmış olsa bile, eklenti yürütülebilir dosyayı bulamadığından, exec eklentisini kullanan bazı projeler bu şekilde oluşturulamaz.
user2043553

15

Maven'in bunu desteklediğini sanmıyorum. Unix üzerindeyseniz ve geçerli dizininizden ayrılmak istemiyorsanız, küçük bir kabuk komut dosyası, kabuk işlevi veya yalnızca bir alt kabuk kullanabilirsiniz:

user@host ~/project$ (cd ~/some/location; mvn install)
[ ... mvn build ... ]
user@host ~/project$

Bir bash işlevi olarak (~ / .bashrc öğenize ekleyebilirsiniz):

function mvn-there() {
  DIR="$1"
  shift
  (cd $DIR; mvn "$@")     
} 

user@host ~/project$ mvn-there ~/some/location install)
[ ... mvn build ... ]
user@host ~/project$

Bunun özel soruya cevap vermediğini, ancak size neyin peşinde olduğunuzu sağlayabileceğinin farkındayım. Windows kabuğuna aşina değilim, ancak orada da benzer bir çözüme ulaşmanız gerekir.

Saygılarımızla


4
Mükemmel. mvn -f param, çocuk pomplarına başvuruda bulunmak için göreceli yol kullanan çok modüllü projelerde çalışmaz. Teşekkürler, aradığım şey bu.
redochka

1
Mac üzerinde çalıştım (ve Linux'ta çalışacağını biliyorum). Windows'ta (veya herhangi bir platformda) mevcut yolu, projenize cd'yi kaydedebilmeli, orada mvn şeyler yapabilmeli ve bir komut dosyasında cd geri alabilmelisiniz. Tek sorun betiğin yarıda kesilmesi olurdu.
Erk


0

Bunu deneyebilirsiniz:

pushd ../
maven install [...]
popd
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.