LoginSignup
5
5

More than 3 years have passed since last update.

GradleでAntを実行する方法

Posted at

Javaを使っているプロジェクトで既にAntの資産がある場合など、GradleからAntのbuild.xmlのtargetを実行したい場合などあるかと思います。

そのためのやり方を調べたのでメモがてら綴ります。

build.xmlをインポート

インポートするにはant.importBuild()メソッドを使います。

▼build.xmlにはechoするtargetを1つ用意

build.xml
<?xml version="1.0" encoding="utf-8" ?>

<project name="antsample" default="target01">
    <target name="target01">
        <echo message="message01" />
    </target>
</project>

▼build.gradle側でbuild.xmlを使えるようインポート

build.gradle
ant.importBuild 'build.xml'

▼build.xmlで定義したtargetが使えるようになっている

$ gradle tasks --all
〜省略〜
Other tasks
-----------
prepareKotlinBuildScriptModel
target01

$ gradle target01
> Task :target01
[ant:echo] message01

BUILD SUCCESSFUL in 846ms
1 actionable task: 1 executed

Antのtarget名とGradleのtask名が重複する場合

注意点として、build.xml上のtargetとにGradleに用意されているタスク名が重複するとエラーになります。
そのため、以下のようにantのtargetはant.【target名】で実行できるようにしておくと良さそうです。

build.gradle
ant.importBuild('build.xml') {
    antTaskName -> "ant.${antTaskName}".toString()
}
$ gradle tasks --all
〜省略〜
Other tasks
-----------
ant.build
prepareKotlinBuildScriptModel

プロパティ設定方法

Ant実行時は-Dで引数を指定できましたが、Gradleでも同じことができます。

▼build.xml側でpropertyを定義します

build.xml
<?xml version="1.0" encoding="utf-8" ?>

<project name="antsample" default="target01">
    <property name="message" value="default message"/>
    <target name="target01">
        <echo message="${message}" />
    </target>
</project>

▼Gradle側はbuild.xmlのインポートだけで大丈夫です

build.gradle
ant.importBuild 'build.xml'

▼メッセージを指定してechoさせることができました

$ gradle target01 -Dmessage='message param'
> Task :target01
[ant:echo] message param

BUILD SUCCESSFUL in 726ms
1 actionable task: 1 executed

まとめ

引数を指定してGradleからAntを実行させるだけでしたが、結構苦労しました。
最初はgradle.build側でant.propertiesとか使って引数渡したりしたてのですが、それは使わなくてもコマンドラインから直接「-D」でtargetを実行できたので、かなりスッキリしました。

GradleやGroovyは触ってて面白いので、また学んだことがあったら投稿していきます。

参考

Gradle User Guide
Gradle (build.gradle) 読み書き入門

以上、ありがとうございました。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5