Un de mes scripts de build importe ce plugin de nébuleuse:
plugins {
id 'nebula.ospackage' version '3.5.0'
}
J'ai déplacé toutes mes informations de version dans un fichier séparé auquel tous les projets ont accès et je me demande quelle est la syntaxe correcte pour convertir en quelque chose comme:
plugins {
id 'nebula.ospackage' version "$versions.nebula_gradle_ospackage_plugin"
}
Lorsque j'essaie d'exécuter ce qui précède avec "Gradle Clean Build", j'obtiens l'erreur suivante:
fichier de construction 'build.gradle': 2: la liste d'arguments doit être exactement 1 chaîne littérale non vide
Voir https://docs.gradle.org/2.7/userguide/plugins.html#sec:plugins_block pour plus d'informations sur le bloc plugins {}
@ ligne 2, colonne 33. id version 'nebula.ospackage' "$ versions.nebula_gradle_ospackage_plugin"
L'article lié montre comment je pourrais utiliser le bloc "buildscript", qui fonctionne, mais il semble qu'il doit y avoir un moyen de faire fonctionner cela sur une seule ligne?
Depuis Gradle 5.6, vous pouvez déclarer vos versions de plugin dans le gradle.properties
fichier, et référencez ces propriétés dans le bloc plugins
.
Par exemple, le gradle.properties
fichier:
springBootVersion=2.2.0.RELEASE
le bloc plugins
dans build.gradle
:
plugins {
id "org.springframework.boot" version "${springBootVersion}"
}
Voir: https://github.com/gradle/gradle/issues/1697#issuecomment-506910915 .
Voir également:
Vous ne pouvez pas utiliser de variable ici:
Où "plugin version" et "plugin id" doivent être des chaînes constantes, littérales. Aucune autre déclaration n'est autorisée; leur présence entraînera une erreur de compilation.
Il s'agit d'un ancien article, mais le bogue est toujours ouvert, et j'ai trouvé cet article à la recherche de solutions de contournement.
Il semble que vous en étiez déjà au courant et que vous en avez la réponse de BoygeniusDexter , mais je pense que cela peut aider d'autres personnes à trouver ce message comme moi. La solution de contournement suivante est basée sur le Gradle docs et a résolu le problème pour moi:
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
}
repositories {
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id 'Java'
// and other plugins
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
}
// but the one with the variable version is applied the old way:
apply plugin: 'org.springframework.boot'
// We can use the variable in dependencies, too:
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion
// ...
}