私のビルドスクリプトの1つがその星雲プラグインをインポートします。
plugins {
id 'nebula.ospackage' version '3.5.0'
}
私はすべてのバージョン情報を、すべてのプロジェクトがアクセスできる別のファイルに移動しており、次のようなものに変換するための正しい構文は何なのかと思っています。
plugins {
id 'nebula.ospackage' version "$versions.nebula_gradle_ospackage_plugin"
}
「gradle clean build」で上記を実行しようとすると、次のエラーが発生します。
ビルドファイル 'build.gradle':2:引数リストは正確に1つのリテラルで空でない文字列でなければなりません
プラグイン{}ブロックの詳細については、 https://docs.gradle.org/2.7/userguide/plugins.html#sec:plugins_block を参照してください
@行2、列33。id 'nebula.ospackage' version "$ versions.nebula_gradle_ospackage_plugin"
リンクされた記事は、「buildscript」ブロックをどのように使用できるかを示していますが、これは機能しますが、これを1行で機能させる方法が必要なようです。
Gradle 5.6以降、gradle.properties
ファイルでプラグインのバージョンを宣言し、これらのプロパティをplugins
ブロックで参照できます。
たとえば、gradle.properties
ファイル:
springBootVersion=2.2.0.RELEASE
build.gradle
内のplugins
ブロック:
plugins {
id "org.springframework.boot" version "${springBootVersion}"
}
参照: https://github.com/gradle/gradle/issues/1697#issuecomment-506910915 。
以下も参照してください。
ここでは変数を使用できません:
"plugin version"と"plugin id"は定数、リテラル、文字列でなければなりません。他のステートメントは許可されていません。これらが存在すると、コンパイルエラーが発生します。
これは古い投稿ですが、 バグ はまだ開いています。回避策を探しているこの投稿を見つけました。
あなたはすでにこれを知っていて、実際には BoygeniusDexterの答え があるようですが、これは私がしたように他の人がこの投稿を見つけるのに役立つと思います。次の回避策は Gradle docs に基づいており、問題を解決しました。
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
// ...
}