Mon jar
actuel dans build.gradle
est comme ci-dessous:
jar {
manifest {
attributes "Main-Class": "hoge.Main"
}
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
et fonctionne bien.
Cependant, j'ai un message de Gradle (peut-être depuis 6+?)
Voici le véritable message:
The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation configuration instead.
La partie configurations.compile
est obsolète.
Comment puis-je le mettre à jour?
Si j'ai changé
jar {
manifest {
attributes "Main-Class": "hoge.Main"
}
from configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }
}
Gradle dit > Resolving configuration 'implementation' directly is not allowed
La configuration compile
a été déconseillée au profit de implementation
.
Voir docs .
Pour ceux qui souhaitent mettre à niveau leur configuration Gradle au format 7.0+, notez que le simple remplacement de compile
par implementation
ou api
entraînera probablement un bug si vous utilisez le Java
brancher. Vous devez utiliser le Java-library
brancher. Documentation .
Assurez-vous que dans votre gradle.config
vous remplacez:
apply plugin: 'Java'
avec:
apply plugin: 'Java-library'
Vous utilisez implementation
pour les dépendances non transitives et api
pour les dépendances transitives (si les dépendances sont consommées directement par les dépendants de votre projet).
Vous devez remplacer compile
par runtimeClasspath
dans votre cas.
Dans les versions précédentes de Gradle, compile
avait trop de responsabilités:
Il a été remplacé par implementation
pour la déclaration de dépendance, il doit également être remplacé par quelque chose pour la résolution.
Cependant, dans votre cas, vous souhaiterez probablement empaqueter les dépendances runtime et non celles de compilation. Par conséquent, vous devez utiliser runtimeClasspath
comme configuration à résoudre. Et pas compileClasspath
qui ne contiendrait aucune dépendance runtimeOnly
.