2017-02-05 13 views
1

が、私はおよそGradle Execを読んでいないし、作成していないbuild.gradle以下:私はgradlew stopTomcat実行すると、出力は次のようになりますGradle、commandLine 'cmd'、 '/ c'、 'echo doLast!'何

task startTomcat(type:Exec) { 
    commandLine 'cmd', '/c', 'echo init startTomcat' 
} 

task stopTomcat(type:Exec) { 

    // on windows: 
    commandLine 'cmd', '/c', 'echo init stopTomcat!' 
    doLast { 
     commandLine 'cmd', '/c', 'echo doLast stopTomcat!' 
    } 
} 

Parallel execution with configuration on demand is an incubating feature. 
:stopTomcat 
init stopTomcat! 

が、私はラインが表示されないdoLast stopTomcat!なぜdoLastでコマンドを実行できませんか?

答えて

1

あなたのタスクのタイプはExecです。 commandLineメソッド呼び出しは、cmd,/cおよびecho init stopTomcat!をそれに渡すことによってタスクを構成します。これは設定段階で発生します。そして、doLastブロックが開始

init stopTomcat! 

とそれにcmd/cecho doLast stopTomcat!を渡して、タスクを設定します。

次にタスクが実行フェーズと版画で実行されます。この設定は、takが既に実行されているので効果がありません。

あなたが行うことができ、第二の印刷を取得するには:

task stopTomcat(type:Exec) { 

    // on windows: 
    commandLine 'cmd', '/c', 'echo init stopTomcat!' 
    doLast { 
     exec { 
      commandLine 'cmd', '/c', 'echo doLast stopTomcat!' 
     } 
    } 
} 

これはexecのタスクを起動する方法を別の方法です。

関連する問題