Używam Mavena jako narzędzia do budowania. Ustawiłem zmienną środowiskową o nazwie env
. Jak mogę uzyskać dostęp do wartości tej zmiennej środowiskowej w pom.xml
pliku?
java
maven
environment-variables
pom.xml
user1016403
źródło
źródło
${env.XYZ}
odniesienie jako czerwone. Zmienna jest poprawnie rozwijana w czasie wykonywania, ale w czasie kompilacji jest wyświetlana na czerwono. Dlatego mam to samo pytanie, które zostało zadane pierwotnie.Odpowiedzi:
Sprawdź przewodnik po właściwościach Mavena ...
Jak Seshagiri zauważył w komentarzach,
${env.VARIABLE_NAME}
zrobi, co chcesz.Dodam słowo ostrzeżenia i powiem, że a
pom.xml
powinno całkowicie opisać twój projekt, więc proszę, rozważ rozsądnie używać zmiennych środowiskowych. Jeśli uzależnisz swoje kompilacje od środowiska, trudniej będzie je odtworzyćźródło
Bezpieczniejsze może być bezpośrednie przekazywanie zmiennych środowiskowych do właściwości systemu maven. Na przykład, powiedzmy w Linuksie, że chcesz uzyskać dostęp do zmiennej środowiskowej MY_VARIABLE. Możesz użyć właściwości systemowej w pliku pom.
Ustaw wartość właściwości w wierszu poleceń maven:
źródło
Ponadto, upewnij się, że zmienna jest składają się wyłącznie wielkimi literami .... Nie wiem dlaczego (dokumentacja nie mówi nic o tym wyraźnie, przynajmniej łącza przez @Andrew biały), ale jeśli zmienna jest słowem składającym się z małych liter (np. env.dummy), zmienna zawsze była pusta lub zerowa ...
Zmagałem się z tym przez około godzinę, dopóki nie zdecydowałem się wypróbować ZMIENNEJ WIELKICH LITER i problem został rozwiązany.
Przykłady zmiennych OK:
( UWAGA : używałem maven v3.0.5)
Mam nadzieję, że to może komuś pomóc ....
źródło
Nie możemy użyć
źródło
Zmagałem się z tym samym, uruchamiając skrypt powłoki, który ustawiał zmienne, a następnie chciałem użyć zmiennych w shared-pom. Celem było, aby zmienne środowiskowe zastępowały ciągi znaków w plikach projektu za pomocą wtyczki com.google.code.maven-replaceer-plugin.
Używanie
${env.foo}
lub${env.FOO}
nie działało dla mnie. Maven po prostu nie znalazł zmiennej. Udało się przekazać zmienną jako parametr wiersza poleceń w Maven. Oto konfiguracja:Ustaw zmienną w skrypcie powłoki. Jeśli uruchamiasz Mavena w skrypcie podrzędnym, upewnij się, że zmienna jest ustawiana, np. Używając
source ./maven_script.sh
do wywołania jej ze skryptu nadrzędnego.W shared-pom utwórz parametr wiersza polecenia, który pobiera zmienną środowiskową:
W com.google.code.maven-replaceer-plugin wprowadź wartość zastępczą
${foo}
.W moim skrypcie powłoki, który wywołuje maven, dodaj to do polecenia:
-Dfoo=$foo
źródło
Możesz użyć
<properties>
tagu, aby zdefiniować niestandardową zmienną i${variable}
wzorzec, który ma z niej korzystaćźródło