gradle使ってみる (3) - ant -
Antな機能を使ってみる
build.xml (ant)
<project>
<target name="echo">
<echo>hoge fuga foobar</echo>
</target>
</project>
ただechoターゲット定義しておくだけ
build.gradle
// antのbuild.xmlを読みこんでタスクをインポート的な
ant.importBuild "build.xml"
task test1 << {
// build.xmlのechoタスクを実行
tasks.echo.execute()
// antのechoをgradleからでも使える
ant.echo("hoge")
// 引数はこんな感じでも渡せる
// ant.echo(message: "hoge")
// ant.pathを使ってディレクトリとかを走査出来たり等
def path = ant.path {
// fileset(dir: "src", includes: "**/*.java")
fileset(dir: "src") {
include(name: "**/*.java")
}
}
path.each {
println it
}
// Javaソースだけをzipにまとめる
ant.zip(destfile: "test.zip", update: "true") {
fileset(dir: "src", includes: "**/*.java")
}
}
という感じでantキーワードでAntの機能を使用できる模様
余談1: Javaをコンパイルしたり実行したり
但し、Mavenなリポジトリから依存性を取得して、それをAnt機能で実行する。で実行する対象クラスが
import org.joda.time.DateTime;
public class Sample {
public static void main(String[] args) throws Exception {
System.out.println(DateTime.now());
}
}
っていう感じでjoda-timeな依存性を持つ適当なJavaコードを用意。あくまでデモンストレーション的な
apply plugin: "java"
repositories {
mavenCentral()
}
dependencies {
compile "joda-time:joda-time:2.1@jar"
}
task test1 << {
// srcディレクトリにあるソースをコンパイル。その際にMavenから取得した依存性参照を設定
ant.javac(
srcdir: "src",
destdir: "bin",
fork: "true",
includeantruntime: "true",
classpath: configurations.compile.asPath
)
ant.java(classname: "Sample", fork: "true") {
classpath {
pathElement(location: "bin")
pathElement(path: configurations.compile.asPath)
}
}
}
コンパイルはbinディレクトリにぶち込むので実行する際にそこの参照がもちろん必要な訳なので、それプラス依存性となるjoda-timeの2つをpathElementでant.javaタスクでclasspathを指定すれば設定出来る模様