antНачало работы с муравьем


замечания

В этом разделе представлен обзор того, что такое Ant, и почему разработчик может захотеть его использовать.

Он также должен упомянуть любые крупные темы в Ant, а также ссылки на связанные темы. Поскольку Documentation for Ant является новым, вам может потребоваться создать начальные версии этих связанных тем.

Минимальные версии Java

Различные версии Ant требуют разных версий Java runtime (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-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

Добавьте следующую цель в свой файл 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 .

Создать банку

Следующее создаст dist/output.jar из исходного кода в src и библиотеках в lib и будет использовать 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
 

Кроме того, теперь пользователь может запустить команду ant качестве целевого имени по default добавленного в проект. Когда команда ant запущена, она ищет цель проекта по default и выполняет ее.

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

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

Если скрипт сборки написан кем-то другим, и конечному пользователю нравится видеть, какую цель он может запустить, запустите команду, которая покажет все цели, которые имеют описания.

$ ant -p
 

Установка или настройка

Установка Ant очень проста. Выполните следующие действия, чтобы установить Ant на платформу Windows:

  1. Загрузите последнюю версию ant с веб-сайта Apache

  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

В качестве альтернативы, используя Homebrew на macOS или Linuxbrew на Linux, вы можете просто запустить: brew install ant

При использовании варева нет необходимости настраивать переменные среды.

Некоторые дистрибутивы Linux также поддерживают установку Ant от соответствующих менеджеров пакетов.

Для тестирования Ant установлен правильно, перейдите в командную строку и выполните

ant -version
 

Эта команда будет печатать версию Ant, а также показывает, что Ant был успешно установлен.

Страница собственных инструкций по установке Ant доступна на веб-сайте Apache Ant .

Печатать информацию об окружающей среде перед сборкой

Следующее удобно иметь в журналах построения, которые идентифицируют машину сборки, и некоторые параметры; просто сделайте свою 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

Следующее запустит JUnit в тестах, соответствующих test/**/*Test.java . Для этого нужно, чтобы junit.jar находился в папке lib .

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