現在、antを使っているプロジェクトがGradleに移行してくるのもなかなか簡単です。やってみましょう。

リスト●ant/build.xml
<?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/build.gradle
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の順で実行されました。