現在、antを使っているプロジェクトがGradleに移行してくるのもなかなか簡単です。やってみましょう。
<?xml version="1.0" ?>
<project name="AntSample">
<target name="roll">
<script language="javascript">
<![CDATA[
// 6面ダイスを2個ふり、合計値を表示する
var dice = Math.ceil(Math.random() * 6) + Math.ceil(Math.random() * 6);
var echo = AntSample.createTask("echo");
echo.setMessage("2D6: " + dice);
echo.perform();
]]>
</script>
</target>
</project>
ant.importBuild 'build.xml'
task rollBefore {
doLast {
println "ダメージ計算を行います。"
}
roll.dependsOn rollBefore
}
task rollAfter(dependsOn: roll) << {
ant.echo "ダメージロールの結果をHPから引いてください。"
}
実行してみます。
$ gradle rollAfter
:rollBefore
ダメージ計算を行います。
:roll
[ant:echo] 2D6: 11
:rollAfter
[ant:echo] ダメージロールの結果をHPから引いてください。
BUILD SUCCESSFUL
Total time: 1.69 secs
うまくいったようです。既存のantの設定ファイルをant.importBuildでインポートするとantのタスクがそのままgradleのタスクとして利用できるようになります。本来のgradleタスクと同様に扱うことができます。ここでは、rollBeforeタスクをGradle側で定義し、Ant側タスクであるrollに依存するように設定しています(roll.dependsOn rollBefore部分)。
また、rollAfterタスクも定義し、rollタスクとの依存関係を定義しています。このため、rollAfterはrollに依存し、rollはrollBeforeに依存しているため、rollAfterを実行するとrollBefore→roll→rollAfterの順で実行されました。