2016-07-30 9 views
0

で変数を構築します。Accessプロジェクトは、私がinit.gradleスクリプトでvarible build.gradleとアクセスの変数を設定する方法を、把握しようとしていますinit.gradleタスク

gradle.allprojects{ 

    task CommonTasks{ 
     println "CommonTasks - loaded" 
    } 

    CommonTasks.doFirst{ 
     println "CommonTasks - doFirst : here i want to use variable, that is declared in project build" 
    } 

    CommonTasks.doLast{ 
     println "CommonTasks - doLast" 
    } 

} 

また、サンプルプロジェクトのビルドの下に見つける: - - は:

サンプル・ビルド・スクリプトの下に見つけてください

apply plugin : 'java' 

//some-where here i want to pass a variable in CommonTasks 
clean.dependsOn CommonTasks 

示唆してください、プロジェクトにアクセスする方法をbuild.gradle変数(たとえば、文字列またはたとえば、ファイルタイプはinit.gradleページにあります。

答えて

0

大部分は、あなただけのすべてのコードが実行されているどの段階に注意する必要があります。あなたはgradle <some task>コマンドを実行したときのGradleは3つの段階があります。

  • 初期化 - init.gradleスクリプト、settings.gradleスクリプトを処理し、一般的にちょうど
  • の設定を定義し、プロジェクト構造が取得 - すべてのプロジェクト
  • 実行のためのbuild.gradleスクリプトを処理 -

重要な要求されたタスクを実行しますあなたは後のフェーズにあなたのinit.gradleスクリプト内のコードの実行を遅らせることができます。このコードがいつ実行されるかを示すために、以下の例にprintステートメントを含めました。あなたが欲しいもののために

1つのオプションは(私の例では、タスクにそれを示して)タスクやプロジェクトの初期化フェーズでプロパティを宣言することです。この方法は、あなたは、プロパティは、あなたのdoFirstでそれを参照する時間によって定義されていることを確信しています。あなたのbuild.gradleはただの設定時に、その変数を設定する必要があります。これは、実行時にmyVar=buildValueをプリントアウトする必要があり

println 'init.gradle: In initialization phase' 
gradle.allprojects { 
    task CommonTasks { 
    println 'init.gradle: In configuration phase' 
    ext.myVar = null 
    println "Value of myVar=${myVar}" 
    doFirst { 
     println 'init.gradle: In execution phase - doFirst' 
     println "Value of myVar=${myVar}" 
    } 
    doLast { 
     println 'init.gradle: In execution phase - doLast' 
    } 
    } 
} 

build.gradle

apply plugin: 'java' 

// set the value 
CommonTasks.myVar = 'buildValue' 

clean.dependsOn CommonTasks 

init.gradle

関連する問題