antErste Schritte mit Ameise


Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was Ant ist und warum ein Entwickler es verwenden möchte.

Es sollte auch alle großen Themen in Ant erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für Ant neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Minimale Java-Versionen

Verschiedene Versionen von Ant erfordern unterschiedliche Versionen der Java-Laufzeitumgebung (JRE), um ausgeführt zu werden.

Ant-Version Minimale Java-Version
1.1 bis 1.5.4 1.1
1.6.x veröffentlicht 1.2
1.7.x veröffentlicht 1.3
1.8.x veröffentlicht 1.4
1.9.x veröffentlicht 1,5
1.10.x veröffentlicht 1.8

Versionen

Ausführung Veröffentlichungsdatum
1.4.1 2001-10-11
1.5.0 2002-07-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-07-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-07-09
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

Bootstrap Apache Ivy

Fügen Sie der build.xml das folgende Ziel 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>
 

Nach dem Ausführen der Task ant ivy.bootstrap können Sie nun Abhängigkeiten mit Apache Ivy auflösen.

<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>
 

Definieren Sie Ihre Ressourcen in 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>
 

Und alle benutzerdefinierten Repositorys in 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>
 

Laden Sie Ihre Abhängigkeiten herunter, indem Sie ant ivy.resolve .

Erstellen Sie ein Jar-Paket

Folgendes erstellt dist/output.jar aus dem Quellcode in src und den Bibliotheken in lib und verwendet src/Main.java als Hauptklasse.

<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>
 

Hallo Welt

Fügen Sie einer Datei mit dem Namen build.xml in Ihrem Projektverzeichnis Folgendes hinzu:

<?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>
 

Die Ausführung von ant main wird an einer Eingabeaufforderung auf einem Computer unter Windows ähnlich wie folgt angezeigt:

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

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

Außerdem kann der Benutzer den Befehl ant jetzt als default ausführen, der dem Projekt hinzugefügt wird. Wenn der Befehl ant ausgeführt wird, sucht er nach dem default Projekts und führt es aus.

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

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

Wenn das Build-Skript von einem anderen Benutzer geschrieben wurde und der Endbenutzer gerne sehen möchte, welches Ziel er ausführen kann, führen Sie den Befehl aus, der alle Ziele mit Beschreibungen anzeigt.

$ ant -p
 

Installation oder Setup

Die Installation von Ant ist sehr einfach. Führen Sie die folgenden Schritte aus, um Ant auf der Windows-Plattform zu installieren:

  1. Laden Sie die neueste Ant-Version von der Apache-Website herunter

  2. Entpacken Sie die Datei auf Ihrem Rechner.

  3. Legen Sie in Umgebungsvariablen ANT_HOME fest

  4. Fügen Sie Ihrer Umgebungsvariable PATH% ANT_HOME% \ bin hinzu.

  5. Setze CLASSPATH =% ANT_HOME% \ lib;% CLASSPATH%

  6. Öffnen Sie nun die Eingabeaufforderung und geben Sie den Befehl ant . Sie sollten unten sehen:

    Buildfile: build.xml does not exist!
    Build failed

Alternativ können Sie Homebrew unter MacOS oder Linuxbrew unter Linux verwenden. Führen Sie einfach Folgendes aus: brew install ant

Bei der Verwendung von brew müssen die Umgebungsvariablen nicht eingerichtet werden.

Mehrere Linux-Distributionen unterstützen auch die Installation von Ant von den jeweiligen Paketmanagern.

Um zu testen, ob Ant ordnungsgemäß installiert ist, navigieren Sie zur Eingabeaufforderung und führen Sie die Ausführung aus

ant -version
 

Dieser Befehl druckt die Ant-Version und zeigt an, dass Ant erfolgreich installiert wurde.

Die Seite mit den eigenen Installationsanweisungen von Ant ist auf der Apache Ant-Website verfügbar .

Drucken Sie die Umgebungsinformationen vor dem Erstellen

Das Folgende ist in Build-Protokollen, die die Build-Maschine und einige Parameter angeben, praktisch. Lassen Sie main Hauptaufgabe einfach von dieser Aufgabe abhängen, um sie vor jedem Build zu drucken.

<!-- 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>
 

Dies führt zur folgenden Ausgabe:

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
 

Führen Sie JUnit aus

Im Folgenden wird JUnit für die Tests ausgeführt, die mit test/**/*Test.java . Dafür muss sich die junit.jar im lib Ordner befinden.

<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>