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?
@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.
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:
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.
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
8
Dla mnie działa w ten sposób: mvn -f /path/to/pom.xml [goals]
Odpowiedzi:
Możesz użyć parametru
-f
i określić ścieżkę do pliku pom, npmvn -f /path/to/pom.xml
To uruchamia maven „tak jakby” znajdowało się w
/path/to
katalogu roboczym.źródło
./path/pom.xml
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:
Jako funkcja bash (którą możesz dodać do ~ / .bashrc):
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
źródło
Dla mnie działa w ten sposób:
mvn -f /path/to/pom.xml [goals]
źródło
Możesz spróbować:
źródło