2013-02-01 4 views
5

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

build.gradle(トップレベル)のように見えます

subprojects { 
    myTask { 
    prop = valueDefinedInChild 
    } 

} 

そして

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

​​

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

答えて

10

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

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

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

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

myTask { 
    prop = 'someValue' 
} 

繰り返しを避ける別の方法は、共通コードを別のスクリプトに分解し、サブプロジェクトにapply from:を含めることです。これは、ロジックが選択されたサブプロジェクトにのみ適用される場合、または親プロジェクトとサブプロジェクト間の結合を避けることが望ましい場合(たとえば、Gradleの新しいconfiguration on demand機能を使用する場合)に適しています。

+0

ありがとう私は共通の構成をトップに移動し、サブプロジェクト固有の構成をサブプロジェクトに移動しました。うまくいく。 –

+0

あなたは私の一日を作った、ありがとう –

関連する問題