2016-06-23 16 views
1

私は比較的新しいgradleです。 私のbuild.gradle:私はしたい何条件からグラデルタスクを実行してください。

def releaseBol = false 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 
    lintOptions { 
     abortOnError false 
    } 

    ... 
    if (project.hasProperty('RELEASE') && project.ext.RELEASE == '1') 
     releaseBol = true 


    if (releaseBol) 
    { 
     .. 
     //some code 
     .. 

    } 

} 

... 

task runScheduleReader() { 
    javaexec { 
     println 'here1' 
     main="-jar"; 
     args = [ 
       "../Generator.jar" 

     ] 
    } 
} 

releaseBol場合runScheduleReaderを実行することですが、私はこれを行うことができますどのように、trueに設定するが、ちょうどそこに移動するとき、私はエラーを取得していますか?

答えて

3

試してみてください。

task runScheduleReader() { 
    enabled = releaseBol 
    doLast { 
     javaexec { 
      println 'here1' 
      main="-jar"; 
      args = [ 
       "../Generator.jar" 
      ] 
     } 
    } 
} 

enabling and disablingタスクを見てください。 2番目の問題は、コンフィグレーションのロジックを追加したので、スクリプトが評価されるたびに実行されることです。 doLastでアクションを追加する必要があります。

+0

didntの仕事私 – Dim

+0

@ディム、_仕事していないのはどういう意味ですか? – Opal

+0

releaseBolがfalseの場合でもまだ実行中です – Dim

1

Opalが提供するsolutionが正しい場合は、enabledタスクオプションを使用して、staskの実行をスキップできます。しかし、これは唯一の変更ではありません。

あなたは現在、タスクの終了時にタイプなしでjavaexecを使用しています。これにより、ビルド設定フェーズでjavaexecが実行され、enabledプロパティ値が意味をなさないことになります。あなたはそれが実行フェーズでは、この2つの方法を実行することができます:doLast閉鎖にjavaexecを移動すると:

task runScheduleReader() { 
    enabled = releaseBol 
    doLast { 
     javaexec { 
      println 'here1' 
      main = "-jar"; 
      args = [ 
        "../Generator.jar" 
      ] 
     } 
    } 
} 

またはタスクのタイプを設定し、それが閉鎖ルートだに設定を移動するための:

task runScheduleReader(type: JavaExec) { 
    enabled = releaseBol 

    println 'here1' 
    main = "-jar"; 
    args = [ 
      "../Generator.jar" 
    ] 

} 
関連する問題