2013-08-30 24 views

答えて

46

あなたはこの方法でそれを行うことができます。そのタスクpreBuild

task build << { 
    println 'build' 
} 
task preBuild << { 
    println 'do it before build' 
} 
build.dependsOn preBuild 

おかげで自動的にbuildタスクの前に呼び出されます。あなたはこの方法でそれを行うことができます(execution相にpreBuildを実行する前の例)構成フェーズでpreBuildを実行したい場合

は:

task build << { 
    println 'build' 
} 
build.doFirst { 
    println 'do it before build' 
} 

Gradleのビルドのライフサイクルに関する詳細はこちらをhttp://www.gradle.org/docs/current/userguide/build_lifecycle.html読むことができます。これは私のために働いた、Androidのプロジェクトでこれを行う方法を不思議に思っている人のために

+0

を行う方法もう一つの方法がありますAPKがこの場所 "\ app \ build \ outputs \ apk"に生成された後のバッチファイル?私の要件は、 "\ app \ build \ outputs \ apk"の場所で生成されたxyz.apkのようなものです。このファイルを "D:/ Xyz"の場所に自動的に移動したいのです。 –

+0

2番目の例の説明が間違っています。 'doFirst'は、ビルドタスクの最初のタスクアクションとしてクロージャを追加します。タスクアクションは実行フェーズで実行されます。 – helpermethod

+0

Task.leftShift(Closure)メソッドは廃止され、Gradle 5.0で削除される予定です。代わりにTask.doLast(Action)を使用してください。 –

23

task myTask << { 
    println "here's a task" 
} 
preBuild.dependsOn myTask 
+4

これを 'assembleDebug'の前に呼び出すことはできますか? –

+1

@IgorGanapolskyはこれをどうすればいいのか私の答えを確認してください –

6

実行する方法この

task myTask << { 
    println "here's a task" 
} 
tasks.whenTaskAdded { task -> 
if (task.name == 'assembleDebug') { 
    task.dependsOn myTask 
} 
+0

私は 'preBuild'タスクでこれをしようとしていますが、それは取っていないようです。 – atreat

+0

preBuildは実際にはwhenTaskAddedを経由しているとは思われません。このclosureで 'task.name'を表示しても、私はそれを見ません。 – atreat

+0

'if(task.name == 'preDebugBuild' || task.name == 'preReleaseBuild')'は 'preBuild'の代わりに私のために働きます。 – atreat

関連する問題