Après la mise à niveau vers Gradle 4.x, je reçois l'avertissement
La propriété CompileOptions.bootClasspath est obsolète et doit être supprimée dans Gradle 5.0. Veuillez utiliser la propriété CompileOptions.bootstrapClasspath à la place.
dans l'un de mes projets. Je ne vois rien qui s'appelle bootClasspath
ou similaire dans mon build.gradle . Que signifie cet avertissement?
l'avertissement apparaît uniquement dans le sous-projet commons et non dans core.
commons/build.gradle:
apply plugin: 'com.Android.library'
ext {
PUBLISH_GROUP_ID = 'com.afollestad.material-dialogs'
PUBLISH_ARTIFACT_ID = 'commons'
PUBLISH_VERSION = '0.9.2.3'
BUILD_TOOLS = "26.0.3"
TARGET_SDK = 25
}
Android {
compileSdkVersion TARGET_SDK
buildToolsVersion BUILD_TOOLS
defaultConfig {
minSdkVersion 16
targetSdkVersion TARGET_SDK
versionCode 1
versionName PUBLISH_VERSION
}
lintOptions {
checkReleaseBuilds false
}
}
dependencies {
implementation project(':core')
}
// Changes to this block must be applied in core/build.gradle and commons/build.gradle
task("javadoc", type: Javadoc) {
description "Generates Javadoc API documentation for the main source code."
source = Android.sourceSets.main.Java.srcDirs
ext.androidJar = "${Android.sdkDirectory}/platforms/${Android.compileSdkVersion}/Android.jar"
classpath += files(ext.androidJar)
exclude "**/BuildConfig.Java"
exclude "**/R.Java"
options.links("http://docs.Oracle.com/javase/7/docs/api/");
options.links("http://d.Android.com/reference/");
}
core/build.gradle:
apply plugin: 'com.Android.library'
ext {
PUBLISH_GROUP_ID = 'com.afollestad.material-dialogs'
PUBLISH_ARTIFACT_ID = 'core'
PUBLISH_VERSION = '0.9.2.3'
SUPPORT_LIBRARY_VERSION = '25.4.0'
BUILD_TOOLS = "26.0.3"
TARGET_SDK = 25
}
Android {
compileSdkVersion TARGET_SDK
buildToolsVersion BUILD_TOOLS
defaultConfig {
minSdkVersion 16
targetSdkVersion TARGET_SDK
versionCode 1
versionName PUBLISH_VERSION
consumerProguardFiles 'progress-proguard.txt'
}
lintOptions {
checkReleaseBuilds false
}
}
dependencies {
api "com.Android.support:support-v13:$SUPPORT_LIBRARY_VERSION"
api "com.Android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION"
api "com.Android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
api "com.Android.support:support-annotations:$SUPPORT_LIBRARY_VERSION"
implementation "me.zhanghai.Android.materialprogressbar:library:1.4.1"
}
// Changes to this block must be applied in core/build.gradle and commons/build.gradle
task("javadoc", type: Javadoc) {
description "Generates Javadoc API documentation for the main source code."
source = Android.sourceSets.main.Java.srcDirs
ext.androidJar = "${Android.sdkDirectory}/platforms/${Android.compileSdkVersion}/Android.jar"
classpath += files(ext.androidJar)
exclude "**/BuildConfig.Java"
exclude "**/R.Java"
options.links("http://docs.Oracle.com/javase/7/docs/api/");
options.links("http://d.Android.com/reference/");
}
My Gradle utilise OpenJDK 8 à partir de /usr/lib/jvm/Java-8-openjdk-AMD64/jre
sur Ubuntu (voir l’ajout de println System.getProperty("Java.home")
dans build.gradle. Aucun studio Android n’est impliqué.
Je peux déclencher l'avertissement en définissant explicitement sourceCompatibility
et targetCompatibility
sur 1.7 (valeur par défaut). En remplaçant la version Java par
Android {
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
l'avertissement disparaît.
La raison pour laquelle l'avertissement est affiché pour un seul projet est qu'il ne se répète pas. commons
est configuré avant core
en raison de ordre alphanumérique . Lorsque je règle sourceCompatibility
et targetCompatibility
sur 1.8 pour commons
, l'avertissement passe à core
.
Définir sourceCompatibility
et targetCompatibility
sur 1.8 pour tous les projets supprime complètement l'avertissement. Si c'est ce que vous voulez pour votre projet et pourquoi Gradle 4 ne peut pas être utilisé sans avertissement avec 1.7, ce sont deux questions distinctes.
Mis à part ce qui précède, je peux dire que l'erreur survient pour une construction Java
. Le code référencé: CompileOptions.bootClasspath
doit pointer sur un fichier JAR d'exécution Java correspondant au système cible prévu. Cela signifie, par exemple, que si vous compilez pour exécuter votre programme sur un serveur utilisant Java 6, vous devez définir la variable bootClasspath
pour qu'elle pointe sur un environnement d'exécution compatible Java6, à savoir:rt.jar
Je configure normalement une variable de projet/variable d'environnement pour pointer vers ce fichier:
BOOT_CLASSPATH
Il se trouve normalement avec le JRE, pas dans le JDK, sauf dans le dossier jre
.
Dans le script du projet Gradle, nous avons:
[compileJava, compileTestJava, ]*.options*.bootClasspath = BOOT_CLASSPATH
Définir explicitement. Cependant, dans d'autres scripts, nous ne définissons pas la bootClasspath
ouvertement du tout, et avons toujours le message en question.
The CompileOptions.bootClasspath property has been deprecated
and is scheduled to be removed in Gradle 5.0. Please use the
CompileOptions.bootstrapClasspath property instead.
... en tous cas. Je suppose donc que le plugin Java le fait lui-même en tant que comportement par défaut. Je réalise que ce n'est qu'une histoire de fond. Je peux aider à résoudre l'avertissement.
CompileOptions.bootstrapClasspath`