Jak uruchomić Maven z innego katalogu (bez płyty CD do katalogu projektu)?


249

Załóżmy, że mój projekt maven znajduje się w /some/location/projectmojej bieżącej lokalizacji i /another/location/jak mogę uruchomić kompilację maven bez zmiany lokalizacji projektu cd /some/location/project?


4
@khmarbaise - Próbuję zautomatyzować kompilację i wdrożenia przy użyciu niektórych skryptów powłoki i nie zawsze jest łatwo używać cd do zmiany katalogu.
Ali Shakiba,

@khmarbaise - możesz odwoływać się do wielu plików lub folderów w lub w pobliżu jednego katalogu, ale pom i pliki, do których się odnosi, znajdują się w innym.
jyoungdev

Odpowiedzi:


432

Możesz użyć parametru -fi określić ścieżkę do pliku pom, npmvn -f /path/to/pom.xml

To uruchamia maven „tak jakby” znajdowało się w /path/tokatalogu roboczym.


39
Nie, -f uruchamia Maven z tym konkretnym pom, a z definicji katalog, w którym znajduje się pom, jest katalogiem roboczym Maven. Używam tego w moim CI-Server do budowania określonych modułów w podkatalogach, i mogę was zapewnić, że działa.
dunni

15
Użyj kropki do względnych ścieżek. np../path/pom.xml
Snekse

3
Jak mówi Dunni, to nie działa. Obecny katalog jest tam, gdzie jesteś. Używasz pom w innym reż. Maven tego nie obsługuje.
mgła

1
java.lang.IllegalArgumentException: Parametr „katalog” nie jest katalogiem
Damir Olejar

Działa w większości moich projektów. Niestety, niektóre projekty korzystające z wtyczki exec nie mogą być budowane w ten sposób, ponieważ wtyczka nie znajduje pliku wykonywalnego, mimo że katalog roboczy jest skonfigurowany.
user2043553

15

Nie sądzę, że maven to obsługuje. Jeśli korzystasz z Uniksa i nie chcesz opuszczać bieżącego katalogu, możesz użyć małego skryptu powłoki, funkcji powłoki lub po prostu podpowłoki:

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

Jako funkcja bash (którą możesz dodać do ~ / .bashrc):

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

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

Zdaję sobie sprawę, że to nie odpowiada na konkretne pytanie, ale może zapewnić ci to, czego szukasz. Nie jestem zaznajomiony z powłoką systemu Windows, chociaż powinieneś również być w stanie znaleźć podobne rozwiązanie.

pozdrowienia


4
Doskonały. mvn -f param nie działa z projektami wielomodułowymi używającymi ścieżki względnej do odniesienia poms potomnych. Dzięki, tego szukałem.
redochka

1
Mam to działa na Macu (i wiem, że będzie działać na Linuksie). W systemie Windows (lub dowolnej platformie) powinieneś być w stanie zapisać bieżącą ścieżkę, cd do swojego projektu, zrobić tam mvn rzeczy i cd z powrotem w skrypcie. Jedynym problemem byłoby, gdyby skrypt zatrzymał się w połowie.
Erk


0

Możesz spróbować:

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