gradle使ってみる (3) - ant -

2012-12-13T00:00:00+00:00 gradle Java

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を指定すれば設定出来る模様

gradle使ってみる (4) - Java Plugin - gradle使ってみる (2) - タスク定義な小メモ -