web-dev-qa-db-ja.com

Gradleで、プラグインバージョンの変数をどのように使用しますか?

私のビルドスクリプトの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行で機能させる方法が必要なようです。

41
crobicha

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

以下も参照してください。

  1. https://docs.gradle.org/5.6/release-notes.html#central-management-of-plugin-versions-with-settings-script
  2. https://docs.gradle.org/5.6/userguide/plugins.html#sec:plugin_management
9
zhouji

ここでは変数を使用できません:

"plugin version"と"plugin id"は定数、リテラル、文字列でなければなりません。他のステートメントは許可されていません。これらが存在すると、コンパイルエラーが発生します。

36
BoygeniusDexter

これは古い投稿ですが、 バグ はまだ開いています。回避策を探しているこの投稿を見つけました。

あなたはすでにこれを知っていて、実際には 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
    // ...
}
6
barfuin