Nie mogę wymyślić, żeby to zadziałało.
Scenariusz:
- Mam aplikację zbudowaną z gradle
- Aplikacja korzysta z JavaFX
Czego chcę
- Użyj zmiennej (zdefiniowanej dla maszyny programisty), która wskazuje instalację JDK, która będzie używana do budowania całej aplikacji / testów / ...
Pomyślałem o posiadaniu gradle.properties
pliku, definiowaniu zmiennej. Coś jak
JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Czego nie chcę
- wskaż
JAVA_HOME
żądany JDK
Mógłbym żyć z wieloma sugestiami:
- rozwiązanie, które definiuje systemową zmienną środowiskową, którą mogę sprawdzić w skrypcie build.gradle
- zmienna zdefiniowana w gradle.properties
- przesłanianie zmiennej JAVA_HOME tylko dla kontekstu kompilacji (coś podobnego
use JAVA_HOME=<my special JDK path defined somewhere else defined>
) - coś innego, o czym nie myślałem
Pytanie:
- Jak połączyć zmienną (jakkolwiek zdefiniowaną jako zmienną w
gradle.properties
systemowej zmiennej środowiskowej, ...) z procesem kompilacji?
Mam więcej niż jeden JDK7 i muszę wskazać specjalną wersję (minimalna wersja JDK_u).
Każda odpowiedź jest doceniana i jestem wdzięczny za każdą wskazówkę we właściwym kierunku.
java
gradle
build.gradle
tyran
źródło
źródło
org.gradle.java.home
wgradle.properties
pliku? linkorg.gradle.java.home
ustawienie dotyczy tylko demona gradly, najwyraźniej ... W każdym razie spróbuj ustawić fork na true i forkOptions.executable na jdk, którego chcesz użyć: linkOdpowiedzi:
Dwie drogi
gradle.properties
w.gradle
katalogu w swoimHOME_DIRECTORY
zestawieorg.gradle.java.home=/path_to_jdk_directory
lub:
W Twoim
build.gradle
źródło
gradle.properties
Mogą być zdefiniowane na poziomie projektu też zobaczyć gradle.org/docs/current/userguide/build_environment.html./gradlew -Dorg.gradle.java.home=/path_to_jdk_directory
. Dobrze, jeśli nie chcesz dotykaćgradle.properties
.Jeśli dodasz JDK_PATH w gradle.properties, twoja kompilacja stanie się zależna od tej konkretnej ścieżki. Zamiast tego uruchom zadanie gradle z następującym parametrem wiersza poleceń
W ten sposób twoja kompilacja nie zależy od konkretnej ścieżki.
źródło
/usr/lib/java/jdk/home
wskazujące na zainstalowaną bieżącą wersję. Oczywiście, jeśli chcesz konkretnej wersji (np. U51), musisz dokładnie określić ścieżkę. Także niektóre narzędzia, które chcą rozpocząć grading, wydają się nie ustawiać JDK w środowisku, w którym oceniają. I na przykład nigdy nie ustawiłem JDK jako bieżącego JAVA_HOME, chyba że jest to sesja programistyczna.PROGRA~1
(wszystkie wielkie litery) lub cokolwiek innego, co mówi DIR / X."... gradle itself (either standalone distribution or wrapper) uses JDK from JAVA_HOME environment variable or (if it is not set) from PATH".
Podałem JAVA_HOME przed wywołaniem gradlew, aby to naprawić. (tj.env JAVA_HOME=/path/to/java gradlew war --stacktrace
)Do osób, które znajdą się tutaj, szukając odpowiednika Gradle właściwości Maven
maven.compiler.source
(lub<source>1.8</source>
):W build.gradle możesz to osiągnąć za pomocą
Zobacz dokumentację Gradle na ten temat .
źródło
Jeśli wykonujesz za pomocą wrappera stopni, możesz uruchomić polecenie ze ścieżką JDK w następujący sposób
./gradlew -Dorg.gradle.java.home=/jdk_path_directory
źródło
Jeśli korzystasz z linuksa i otoki stopni, możesz użyć następującego rozwiązania.
Dodaj ścieżkę do pliku local.properties:
Dodaj do pliku skryptu gradlew:
W tym rozwiązaniu każdy programista może ustawić własną ścieżkę JDK. Plik
local.properties
nie powinien być zawarty w systemie kontroli wersji.źródło
Dodałem tę linię do mojego pliku GRADLE_HOME / bin / gradle -
export JAVA_HOME=/path/to/java/version
źródło
Jest jeszcze jedna opcja do naśladowania. W zadaniach stopniowych możesz ustawić żądaną ścieżkę jdk. (Wiem, że minęło trochę czasu od opublikowania pytania. Ta odpowiedź może komuś pomóc.)
Kliknij prawym przyciskiem myszy na wdrożenie lub dowolne inne zadanie i wybierz „Otwórz konfigurację uruchamiania stopniowego ...”
Następnie przejdź do „Java Home” i wklej żądaną ścieżkę Java.
Pamiętaj, że bin zostanie dodany przez samo zadanie stopniowania. Więc nie dodawaj „bin” do ścieżki.
źródło
istnieje wtyczka Gradle, która automatycznie pobiera / uruchamia JDK:
https://plugins.gradle.org/plugin/com.github.rmee.jdk-bootstrap
Nie ma jeszcze integracji IDE i wymagana jest przyzwoita powłoka w systemie Windows.
źródło
W systemie Windows uruchom zadanie gradate z parametrem ścieżki jdk 11 w cudzysłowie
źródło
Jak widać w Gradle (wtyczka Eclipse)
http://www.gradle.org/get-started
Jeśli używasz tej wtyczki Eclipse lub Enide Studio 2014 , alternatywna JAVA_HOME do użycia (ustawiona w Preferencjach) będzie w wersji 0.15, patrz http://www.nodeclipse.org/history
źródło
Używam Gradle 4.2. Domyślnym pakietem JDK jest Java 9. Na początku Java 9, Gradle 4.2 działa poprawnie na JDK 8 (nie JDK 9).
JDK ustawiam ręcznie w następujący sposób, w pliku
%GRADLE_HOME%\bin\gradle.bat
:źródło
Jeśli używasz JDK 9+, możesz to zrobić:
Możesz również zobaczyć następujące powiązane problemy:
-release
argumentu kompilatoraźródło
Android Studio
Plik> Struktura projektu> Lokalizacja SDK> Lokalizacja JDK>
GL
Zainstaluj JDK
źródło
Jeśli używasz Kotlin DSL,
build.gradle.kts
dodaj:Oczywiście zakładam, że masz system operacyjny Windows i
javac
kompilator jest na dobrej drodzeC:\bin\jdk-13.0.1\bin\javac
. W przypadku systemu operacyjnego Linux będzie podobnie.źródło
Jeśli chcesz ustawić to raz, aby uruchomić określone polecenie:
źródło