10

子プロジェクトで宣言される変数を使用する親ビルドでタスクを宣言するマルチプロジェクトgradleビルドがあります(値はサブプロジェクトによって変わる可能性があります)。ただし、構成フェーズ中に変数が存在しないというエラーが発生します。私のセットアップは次のようになります

build.gradle(トップレベル)

subprojects {
   myTask {
     prop = valueDefinedInChild
   }

}

その後

build.gradle(サブプロジェクト)

valueDefinedInChild = 'someValue'

これを正しく行う方法はありますか?

4

1 に答える 1

12

これを行う方法はありますが ( project.evaluationDependsOnChildren())、最後の手段としてのみ使用することをお勧めします。代わりに、トップ レベルで共通点を構成し、サブプロジェクト レベルで相違点を構成します。

build.gradle (トップレベル):

subprojects {
    task myTask { // add task to all subprojects
        // common configuration goes here
    }
}

build.gradle (サブプロジェクト):

myTask {
    prop = 'someValue'
}

繰り返しを避けるもう 1 つの方法は、一般的なコードを別のスクリプトに分割し、サブプロジェクトにそれを .xml で含めることapply from:です。これは、ロジックが選択されたサブプロジェクトにのみ適用される場合、または親プロジェクトとサブプロジェクト間の結合を避けることが望ましい場合 (たとえば、Gradle の新しい構成オンデマンド機能を使用する場合) に適しています。

于 2013-02-02T00:45:49.507 に答える