Gradleでタスクから別のタスクを呼び出す
やりたいこと
Gradleで依存関係を設定して2つのタスクを1つにまとめるで依存関係を使ったが
個人的には、タスクから別のタスクを呼び出す方がしっくり来る感じがする。
なので試してみる。
試行錯誤1
タスクの呼び出し箇所
task deploy { downloadZip unzip }
結果
gradle deploy :deploy UP-TO-DATE BUILD SUCCESSFUL Total time: 5.351 secs
downloadZip、unzipタスクは呼ばれていない
試行錯誤2
task deploy { downloadZip() unzip() }
結果
FAILURE: Build failed with an exception. * Where: Build file 'C:\workspace\Gradle_SandBox\AnotherTask\build.gradle' line: 28 * What went wrong: A problem occurred evaluating root project 'AnotherTask'. > Could not find method downloadZip() for arguments [] on root project 'AnotherTask'. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 5.063 secs
ググった結果
サンプルにもリファレンスにもそれっぽいのがない。
ググったら、こんなのがあった。
How to call a task from another task
The truth is that we don't officially support calling tasks programmatically. Instead you are supposed to use task dependencies whenever possible. That said, I think task.execute() should work, but as you mentioned it won't execute dependent tasks.
tasks.タスク名.execute()でいけるみたいだが、これあかんやつや。
実行結果
. │ build.gradle │ ├─.gradle │ └─1.8 │ └─taskArtifacts │ cache.properties │ cache.properties.lock │ fileHashes.bin │ fileSnapshots.bin │ outputFileStates.bin │ taskArtifacts.bin │ └─build ├─quickstart │ webapp-quickstart.war │ └─tmp ├─downloadZip │ quickstart.zip │ └─expandedArchives └─quickstart.zip_5udnrbl91abhenrt86vsk3262d └─quickstart webapp-quickstart.war
環境
------------------------------------------------------------ Gradle 1.8 ------------------------------------------------------------ Build time: 2013-09-24 07:32:33 UTC Build number: none Revision: 7970ec3503b4f5767ee1c1c69f8b4186c4763e3d Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013 Ivy: 2.2.0 JVM: 1.7.0_45 (Oracle Corporation 24.45-b08) OS: Windows 7 6.1 amd64
添削歓迎
ここ間違ってるよ
こうした方がよくないか?
こういうことなんじゃないかな。
この環境だとこうなるよ
などなど
方法は、コメント、はてブ、Twitter @orange_clover宛 で、お願いします。