2016-08-11 7 views
0

間のコピータスクを分割:のGradle:私はサブプロジェクトのディレクトリ内の私のbuild.gradleでタスクを持っている設定と実行フェーズ

task copyResources { 

    copy { 
     from 'cli' 
     into 'build/cli' 
    } 

    copy { 
     from 'module' 
     into 'build/module' 
    } 
} 

それが目的だがGradleののビルドフォルダにプロジェクトディレクトリからの2つのフォルダをコピーすることです。しかし、宛先フォルダは「ビルド」と呼ばれるので、他のタスクを実行すると奇妙な動作(クリーンな動作など)が発生する可能性があります。私は実行フェーズにこのタスクを移動しようとすると

、それは実行されません:

タスクをスキップ「:copyResources」を、それは何のアクションを持っていないよう。

コピー動作の送信元と送信先を設定フェーズで設定する必要があるため、正しい動作です。

このタスクの実行を延期することができるので、「ビルド」タスクの後に実行されますか?または、Gradleのcopy()を使用せずに通常のJava/Groovyコードを使用して別のタスクを作成し、実行フェーズで実行する必要がありますか?

答えて

2

これは、タスクを定義したやり方で、コピーは設定時に発生しています。実行時間に移動したい場合は、以下のようにブロックdoLastにラップすることができます。 https://docs.gradle.org/current/userguide/build_lifecycle.html

:ここ

task copyResources { 
    doLast { 
     copy { 
      from 'cli' 
      into 'build/cli' 
     } 

     copy { 
      from 'module' 
      into 'build/module' 
     } 
    } 
} 

は、設定時間対実行を理解することを助けるかもしれないいくつかのドキュメントです

関連する問題