antantを使い始める


備考

このセクションでは、Antの概要、および開発者がAntを使用する理由について概要を説明します。

また、Antの大きなテーマについても言及し、関連するトピックにリンクする必要があります。 Antのドキュメンテーションは新しいものなので、それらの関連トピックの初期バージョンを作成する必要があります。

最小Javaバージョン

Antのさまざまなバージョンでは、実行するためにJavaランタイム(JRE)のさまざまなバージョンが必要です。

Antバージョン最小Javaバージョン
1.1から1.5.4まで 1.1
1.6.xリリース 1.2
1.7.xリリース 1.3
1.8.xリリース 1.4
1.9.xリリース 1.5
1.10.xリリース 1.8

バージョン

バージョン発売日
1.4.1 2001年10月11日
1.5.0 2002年7月10日
1.5.1 2002年10月03日
1.5.2 2003-03-03
1.5.3 2003-04-09
1.5.4 2003-08-12
1.6.0 2003年12月18日
1.6.1 2004-02-12
1.6.2 2004年7月16日
1.6.3 2005-04-28
1.6.4 2005-05-19
1.6.5 2005年06月02日
1.7.0 2006-12-13
1.7.1 2008年7月9日
1.8.0 2010-02-02
1.8.1 2010-04-30
1.8.2 2010-12-20
1.8.3 2012-03-13
1.8.4 2012-05-23
1.9.0 2013-03-10
1.9.1 2013-05-22
1.9.2 2013-07-12
1.9.3 2013-12-29
1.9.4 2014-04-30
1.9.5 2015年06月03日
1.9.6 2015-07-02
1.9.7 2016-04-12
1.9.8 2016-12-31
1.9.9 2017-02-06
1.10.0 2016-12-31
1.10.1 2017-02-06

ブートストラップApache Ivy

build.xml 次のターゲットを追加します。

<!-- Bootstrap ivy -->
<target name="ivy.bootstrap" description="Download Apache Ivy">

    <!-- Define the version to use -->
    <property name="ivy.version">2.4.0</property>

    <!-- Create directory if not exists -->
    <mkdir dir="${user.home}/.ant/lib" quiet="true" />

    <!-- Download it -->
    <echo message="Downloading Apache Ivy..." />
    <get dest="${user.home}/.ant/lib/ivy.jar" src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" />
</target>
 

ant ivy.bootstrap というタスクを実行すると、Apacheのivyを使って依存関係を解決できるようになります。

<target name="ivy.resolve" description="Resolve all artifacts.">

    <!-- Define lib driectory -->
    <property name="dir.lib">lib</property>

    <!-- Create directory if not exists -->
    <mkdir dir="${dir.lib}" />

    <!-- Configure -->
    <property name="ivy.dep.file" value="ivy.xml" />
    <ivy:settings file="ivysettings.xml" />

    <!-- Retrieve to a defined pattern -->
    <echo message="Resolving dependencies..." />
    <ivy:retrieve pattern="${dir.lib}/[artifact](-[classifier]).[ext]" />
</target>
 

ivy.xml リソースを定義する

<ivy-module version="2.0">
        <info organisation="org.apache" module="java-build-tools"/>
        <dependencies>
                <dependency org="junit" name="junit" rev="4.11" />
                <dependency org="org.apache.commons" name="commons-compress" rev="1.9" />
        </dependencies>
</ivy-module>
 

ivysettings.xml カスタムリポジトリ

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
            <ibiblio name="github" m2compatible="true" root="http://github.com/"/>
        </chain>
    </resolvers>
</ivysettings>
 

ant ivy.resolve 実行して依存関係をダウンロードしてください。

jarパッケージを作成する

以下は、 src のソースコードとlib のライブラリからdist/output.jar を作成し、 src/Main.java をメインクラスとして使用します。

<project name="Project" default="main" basedir=".">

    <property name="src.dir"     value="src"/>
    <property name="build.dir"   value="build"/>
    <property name="dist.dir"    value="dist"/>

    <path id="classpath">
        <fileset dir="lib" includes="**/*.jar"/>
        <pathelement path="${build.dir}"/>
    </path>

    <target name="clean">
      <delete dir="${build.dir}"/>
      <delete dir="${dist.dir}"/>
    </target>
    

    <target name="compile">
        <mkdir dir="${build.dir}"/>
        <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"/>
        <copy todir="${build.dir}">
            <fileset dir="${src.dir}" excludes="**/*.java"/>
        </copy>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${dist.dir}"/>
        <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
            <fileset dir="${build.dir}"/>
            <restrict>
                <archives>
                    <zips>
                        <fileset dir="lib" includes="**/*.jar"/>
                    </zips>
                </archives>
            </restrict>
            <manifest>
                <attribute name="Main-Class" value="Main"/>
            </manifest>
        </jar>
    </target>

    <target name="main" depends="clean,jar"/>
</project>
 

こんにちは世界

プロジェクトディレクトリのbuild.xml という名前のファイルに以下を追加します。

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="main">
    <target name="main" description="this is target main">
        <echo message="Hello World" />
    </target>
</project>
 

Windowsを実行しているコンピュータのコマンドプロンプトからant main を実行すると、次のように表示されます。

$ ant main
Buildfile: C:\Users\<me>\Projects\HelloWorld\build.xml

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

また、プロジェクトに追加されたdefault ターゲット名としてant コマンドを実行できるようになりました。 ant コマンドを実行すると、プロジェクトのdefault ターゲットを探して実行します。

$ ant 
Buildfile: C:\Users\<me>\Projects\HelloWorld\build.xml

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

ビルドスクリプトが他の人によって書かれていて、エンドユーザが実行できるターゲットを見たいのであれば、説明があるすべてのターゲットを表示するコマンドを実行します。

$ ant -p
 

インストールまたはセットアップ

Antのインストールは非常に簡単です。 WindowsプラットフォームにAntをインストールするには、以下の手順に従ってください。

  1. Apache Webサイトから最新のantバージョンをダウンロードする

  2. あなたのマシン上のファイルを解凍します。

  3. ANT_HOMEを環境変数に設定する

  4. %ANT_HOME%\ binをPATH環境変数に追加してください。

  5. CLASSPATH =%ANT_HOME%\ lib;%CLASSPATH%を設定します。

  6. コマンドプロンプトを開き、 ant コマンドを入力します。あなたは以下を参照する必要があります:

    Buildfile: build.xml does not exist!
    Build failed

代わりに、MacOSでHomebrewを、またはLinuxでLinuxbrewを使用すると、簡単に実行できます: brew install ant

brewを使用する場合は、環境変数を設定する必要はありません。

いくつかのLinuxディストリビューションは、それぞれのパッケージマネージャーからAntをインストールすることもサポートしています。

Antをテストするには、コマンドプロンプトにナビゲートして実行してください。

ant -version
 

このコマンドはAntバージョンを出力し、Antが正常にインストールされたことを示します。

Antの独自のインストール手順のページは、 Apache Ant Webサイトで入手できます。

ビルド前に環境情報を出力する

ビルドマシンを識別するビルドログといくつかのパラメータを持つのは便利です。単純にmain タスクをこのタスクに依存させて、すべてのビルドの前に印刷してください。

<!-- Print Environment Info -->
<target name="environment">

        <!-- Get the current timestamp -->
        <tstamp>
                <format property="TODAY_UK" pattern="yyyy-MM-dd HH:mm:ss:sss zzz" locale="cn,CN" />
        </tstamp>

        <!-- Get the hostname of the system -->
        <exec executable="hostname" outputproperty="os.hostname" />

        <!-- Print a bunch of information -->
        <echo message="" />
        <echo message="  Build Information" />
        <echo message="" />
        <echo message="  OS Information" />
        <echo message="" />
        <echo message="    User       : ${user.name}" />
        <echo message="    Hostname   : ${os.hostname}" />
        <echo message="" />
        <echo message="    Name       : ${os.name}" />
        <echo message="    Version    : ${os.version}" />
        <echo message="    Build      : ${os.arch}" />
        <echo message="" />
        <echo message="" />
        <echo message="  Java Information" />
        <echo message="" />
        <echo message="    Version    : ${ant.java.version} / ${java.version}" />
        <echo message="    Java Home  : ${java.home}" />
        <echo message="" />
        <echo message="" />
        <echo message="  Current Time : ${TODAY_UK}" />
        <echo message="" />
</target>
 

これにより、以下の出力が得られます。

environment:
     [echo]
     [echo]   Build Information
     [echo]
     [echo]   OS Information
     [echo]
     [echo]     User       : <User Name>
     [echo]     Hostname   : <Host Name>
     [echo]
     [echo]     Name       : Windows 8.1
     [echo]     Version    : 6.3
     [echo]     Build      : amd64
     [echo]
     [echo]
     [echo]   Java Information
     [echo]
     [echo]     Version    : 1.8 / 1.8.0_45
     [echo]     Java Home  : C:\Program Files\Java\jdk1.8.0_45\jre
     [echo]
     [echo]
     [echo]   Current Time : 2016-04-18 00:40:11:011 EDT
 

JUnitを実行する

以下は、 test/**/*Test.java 一致するtest/**/*Test.java JUnitを実行します。これにはlib フォルダにjunit.jarが必要です。

<project name="Project" default="junit" basedir=".">
    <path id="classpath">
        <fileset dir="lib" includes="**/*.jar"/>
        <pathelement path="build"/>
    </path>

    <target name="compile">
        <javac srcdir="test" destdir="build" classpathref="classpath"/>
    </target>

    <target name="junit" depends="compile">
        <junit fork="true" logfailedtests="false">
            <classpath refid="classpath"/>
            <batchtest>
                <fileset dir="test" includes="**/*Test.java"/>
                <formatter type="plain" usefile="false"/>
            </batchtest>
        </junit>
    </target>
</project>