Porównaj ceny domen i usług IT, sprzedawców z całego świata

Jak mogę powiedzieć Gradle, aby używał określonej wersji JDK?


Nie wiem, jak to działa.
Scenariusz:
  • Mam aplikację zbudowaną za pomocą gradle
  • Aplikacja korzysta z JavaFX

Czego chcę
  • Użyj zmiennej (zdefiniowanej na komputerze deweloperskim) wskazującej na instalację JDK, która zostanie użyta do zbudowania całej aplikacji/testów/...

Myślałem o utworzeniu pliku
gradle.properties
definiującego zmienną. Raczej
JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>

Czego nie chcę
  • najedź kursorem
    JAVA_HOME
    na żądany pakiet JDK

Mógłbym żyć z wieloma sugestiami:
  • rozwiązanie definiujące systemową zmienną środowiskową, którą mogę sprawdzić w moim skrypcie build.gradle
  • zmienna zdefiniowana w gradle.properties
  • przesłanianie zmiennej JAVA_HOME tylko dla kontekstu kompilacji (coś w rodzaju
    użyj JAVA_HOME = & < moja specjalna ścieżka JDK zdefiniowana gdzie indziej zdefiniowana & >
    )
  • coś innego, o czym nie pomyślałem

Pytanie:
  • Jak połączyć zmienną (jak zawsze definiowaną jako zmienna w
    gradle.properties
    , zmienną środowiskową systemu, ...) z procesem budowania

Mam dostępnych kilka JDK7 i muszę wskazać wersję niestandardową (minimalna wersja JDK_u).
Każda odpowiedź jest mile widziana i jestem wdzięczny za każdą wskazówkę we właściwym kierunku.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dwie drogi
  • W
    gradle.properties
    w katalogu
    .gradle
    w swoim
    HOME_DIRECTORY
    ustaw
    org.gradle.java.home =/path_to_jdk_directory

lub:
<ol start="2">
[*]
W swoim
build.gradle
compileJava.options.fork = true
compileJava.options.forkOptions.executable =/path_to_javac

[/*]
[/list]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli dodasz JDK_PATH do

gradle.properties
, twoje zgromadzenie staje się zależne od tej konkretnej ścieżki.
Zamiast tego biegnij

zadanie stopniowe

z następującym parametrem wiersza poleceń
gradle build -Dorg.gradle.java.home=/JDK_PATH

W ten sposób twój zestaw nie zależy od żadnej konkretnej ścieżki.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dla osób, które znalazły się tutaj i szukają odpowiednika Gradle właściwości Maven w
maven.compiler.source
(lub
& < source & > 1.8 & </source & > ): 
W build.gradle możesz to osiągnąć za pomocą
apply plugin: 'java'
sourceCompatibility = 1.8
targetCompatibility = 1.8

Widzieć

Dokumentacja Gradle na ten temat
https://docs.gradle.org/3.3/us ... rties
pytanie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli robisz z opakowaniem gradle, możesz uruchomić polecenie ze ścieżką JDK w ten sposób
./gradlew -Dorg.gradle.java.home=/jdk_path_directory
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz linux i gradle wrapper, możesz użyć następującego rozwiązania.
Dodaj ścieżkę do pliku local.properties:
javaHome=<path to JDK>

Dodaj do swojego pliku skryptu gradlew:
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/local.properties 2>/dev/nullif ! [ -z "$javaHome" ]
then
JAVA_HOME=$javaHome
fi

W tym rozwiązaniu każdy programista może zdefiniować własną ścieżkę JDK. Plik
local.properties
nie musi podlegać kontroli źródła.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dodałem tę linię do mojego pliku GRADLE_HOME/bin/gradle -
eksportuj JAVA_HOME =/ścieżka/do/java/wersja
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jest jeszcze jedna opcja do naśladowania. W zadaniach z oceną możesz ustawić żądaną ścieżkę JDK. (Wiem, że minęło dużo czasu od opublikowania pytania. Ta odpowiedź może komuś pomóc).
Kliknij prawym przyciskiem myszy wdrożenie lub dowolne inne zadanie i wybierz „Otwórz konfigurację uruchamiania Gradle ...”
https://i.stack.imgur.com/AAAQn.png
Następnie przejdź do „Java Home” i wklej żądaną ścieżkę java.
https://i.stack.imgur.com/CoLUP.png
Zauważ, że kosz zostanie dodany przez samo zadanie gradle. Więc nie dodawaj „bin” do ścieżki.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

jest wtyczka Gradle, która automatycznie pobiera/ładuje JDK:
https://plugins.gradle.org/plu ... strap
https://plugins.gradle.org/plu ... strap
Nie ma jeszcze integracji IDE, a w systemie Windows wymagana jest przyzwoita powłoka.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W systemie Windows uruchom zadania gradle ze ścieżką parametrów pakietu JDK 11 w cudzysłowach
gradlew clean build -Dorg.gradle.java.home="c:/Program Files/Java/jdk-11"
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz JDK 9+, możesz to zrobić:
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}tasks.withType<JavaCompile> {
options.compilerArgs.addAll(arrayOf("--release", "8"))
}

Możesz również zobaczyć następujące powiązane problemy:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jak widać z

Gradle (wtyczka Eclipse
http://marketplace.eclipse.org/content/gradle
)
http://www.gradle.org/get-started
http://www.gradle.org/get-startedGradle używa dowolnego JDK, który znajdzie w twojej ścieżce (użyj wersji java do przetestowania). Alternatywnie można ustawić zmienną środowiskową JAVA_HOME tak, aby wskazywała katalog instalacyjny żądanego pakietu JDK.

Jeśli używasz tej wtyczki Eclipse lub

Enide Studio 2014
http://www.nodeclipse.org/enide/studio/2014/, alternatywny JAVA_HOME do użycia (określony w ustawieniach) będzie w wersji 0.15, zobacz

http://www.nodeclipse.org/history
http://www.nodeclipse.org/history
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Używam Gradle 4.2. Domyślnym JDK jest Java 9. Na początku Java 9 dzień, Gradle 4.2 działa poprawnie na JDK 8 (nie JDK 9).
JDK zainstalowałem ręcznie w ten sposób, w pliku
%GRADLE_HOME%\bin\gradle.bat

:
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocalset DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%..@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome@rem VyDN-start.
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\
@rem VyDN-end.set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto initecho.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.goto fail:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
@rem VyDN-start.
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\
@rem VyDN-end.
set JAVA_EXE=%JAVA_HOME%/bin/java.exeif exist "%JAVA_EXE%" goto initecho.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.goto fail:init
@rem Get command-line arguments, handling Windows variantsif not "%OS%" == "Windows_NT" goto win9xME_args:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2:win9xME_args_slurp
if "x%~1" == "x" goto executeset CMD_LINE_ARGS=%*:execute
@rem Setup the command lineset CLASSPATH=%APP_HOME%\lib\gradle-launcher-4.2.jar@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %CMD_LINE_ARGS%:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe/c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit/b 1:mainEnd
if "%OS%"=="Windows_NT" endlocal:omega
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz Kotlin DSL, to w
build.gradle.kts
dodaj:
tasks.withType<JavaCompile> {
options.isFork = true
options.forkOptions.javaHome = File("C:\\bin\\jdk-13.0.1\\")
}

Oczywiście zakładam, że masz system operacyjny Windows, a kompilator
javac
znajduje się w ścieżce
C: \ bin \ jdk-13.0.1 \ bin \ javac
. Podobnie będzie z systemem Linux.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Android Studio
>
Plik & > struktura projektu & > Lokalizacja pakietu SDK & > Lokalizacja JDK & >
/usr/lib/jvm/java-8-openjdk-amd64

GL
Zainstaluj JDK
https://stackoverflow.com/a/14788468/5279996
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak więc używam IntelliJ do mojego projektu na Androida i następujące rozwiązania rozwiązały problem w IDE:
tylko dlatego, że może to uratować komuś kilka godzin, które zmarnowałem ...
IntelliJ - & > preferencje - & > budować, uruchamiać, wdrażać - & > narzędzia do budowania - & > Maven - & > Gradle
i zainstaluj

Gradle JVM

w 1.8
upewnij się, że masz również zainstalowany JDK 8 ...
UWAGA: projekt skompilowany dobrze z linii poleceń
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz go zainstalować tylko raz, aby wykonać określone polecenie:
JAVA_HOME=/usr/lib/jvm/java-11-oracle/ gw build

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się