2013-03-11 12 views
9

Chciałbym wiedzieć, czy możliwe jest przekazanie JAVA_HOME jako parametr do linii poleceń mvn. Szukałem prawie wszędzie, ale nie mogłem znaleźć odpowiedzi na to pytanie.Przekaż JAVA HOME jako parametr do mvn

Wiem, że możemy ustawić JAVA_HOME przy użyciu eksportu, ale muszę przekazać go jako parametr, jeśli jest to możliwe. Coś jak:

mvn install -DJava_Home=/usr/java/jdk-1.7.0 

Odpowiedz

3

nie, nie bezpośrednio, ale patrząc na mvn.bat na moim komputerze widzę to obiecujący fragment:

@REM Execute a user defined script before this one 
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre 
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" 

więc można zastąpić dowolną zmienną chcesz w pliku skryptu mavenrc_pre , chociaż zdaję sobie sprawę, że to pozwoli ci przesłonić java home z poziomu wiersza poleceń. Najgorszy przypadek, mvn to prosty plik skryptowy i można do niego dodać opcję. należy również zauważyć, że po prostu przesłanianie JAVA_HOME może nie zawsze przynosić oczekiwane wyniki, ponieważ na wielu systemach JAVA_HOME \ bin znajduje się na ścieżce. oznacza to, że nawet jeśli nadpiszesz, poprzedni jvm nadal będzie na ścieżce, co może prowadzić do nieoczekiwanych rezultatów.

+0

Dziękujemy za szczegółową odpowiedź. Całkowicie zgadzam się z tym, że przesłonięcie JAVA HOME może nie przynieść oczekiwanego rezultatu, a to, co powiedziałeś, ma sens. Zobaczmy, czy możemy mieć więcej współpracowników, więc będziemy mieć ogólne przekonanie, że nie jest to możliwe. Twoja pomoc jest naprawdę doceniana! –

2

Innym hacky sposób zrobiłem tak: (mam większość moich projektów na Java 7, ale garstka na Java 8)

1) Dodaj nowy env zmiennej JAVA8_HOME do .zshrc (lub podobny)

2) skopiować wykonywalnego '' mvn i nazywają to 'mvn8'

3) Wymienić '' z 'JAVA_HOME JAVA8_HOME' in 'mvn8'

teraz mvn8 clean install powinien po prostu pracować.