Apache Ant

Apache Ant (англ. ant — мураха і водночас акронім — «Another Neat Tool») — java-утиліта для автоматизації процесу збирання програмного продукту.

Apache Ant (Another Neat Tool)
Тип програма для автоматичного складання
Розробник Apache Software Foundation
Стабільний випуск 1.9.3 (29 грудня 2013 (2013-12-29))
Версії 1.10.11 (13 липня 2021)[1]
Репозиторій https://git-wip-us.apache.org/repos/asf/ant.git, https://gitbox.apache.org/repos/asf/ant.git
Платформа Віртуальна машина Java
Операційна система крос-платформовий
Мова програмування Java
Ліцензія Apache License 2.0
Вебсайт ant.apache.org

 Apache Ant (Another Neat Tool) у Вікісховищі

Ant — платформонезалежний аналог UNIX-утиліти make, але з використанням мови Java, він вимагає платформи Java, і краще пристосований для Java-проєктів. Найпомітніша безпосередня різниця між Ant та Make те, що Ant використовує XML для опису процесу збирання і його залежностей, тоді як Make має свій власний формат Makefile. За умовчанням XML-файл називається build.xml.

Ant був створений в рамках проєкту Jakarta, сьогодні — самостійний проєкт першого рівня Apache Software Foundation.

Перша версія була розроблена інженером Sun Microsystems Джеймсом Девідсоном (James Davidson), який потребував утиліти подібної make, розробляючи першу референтну реалізацію J2EE.

Опис

На відміну від make, утиліта Ant повністю незалежна від платформи, потрібно лише наявність на застосовуваній системі встановленої робочого середовища Java — JRE. Відмова від використання команд операційної системи і формат XML забезпечують переносимість сценаріїв.

Управління процесом складання відбувається за допомогою XML-сценарію, який також називають Build-файлом. У першу чергу цей файл містить визначення проєкту, що складається з окремих цілей (Targets). Цілі порівняні з процедурами в мовах програмування і містять виклики команд-завдань (Tasks). Кожне завдання являє собою неподільну, атомарному команду, що виконує певну елементарну дію.

Між цілями можуть бути визначені залежності — кожна мета виконується тільки після того, як виконані всі цілі, від яких вона залежить (якщо вони вже були виконані раніше, повторного виконання не здійснюється).

Типовими прикладами цілей є clean (видалення проміжних файлів), compile (компіляція всіх класів), deploy (розгортання програми на сервері). Конкретний набір цілей та їхнього взаємозв'язку залежать від специфіки проєкту.

Ant дозволяє визначати власні типи завдань шляхом створення Java-класів, що реалізують певні інтерфейси.

Часто вживані завдання (Tasks)

Нижче наведено неповний перелік завдань з коротким описом. Актуальна версія програми (1.7) містить близько 150 типів завдань.

Код Дія
Javac компіляція Java-коду
Copy копіювання файлів
Delete видалення файлів і директорій
Move переміщення файлів і директорій
Replace заміщення фрагментів тексту у файлах
JUnit автоматичний запуск юніт-тестів
Exec виконання зовнішньої команди
Zip створення архіву у форматі Zip
CVS виконання CVS-команди
Mail відправка електронної пошти
Xslt накладення XSLT-перетворення

Приклад сценарію

Цей сценарій визначає дві мети — clean і build. Перша виконує вилучення тимчасових файлів, друга — компіляцію і створення JAR-архіву. Мета build залежить від clean, тому при її запуску буде спочатку виконане очищення і тільки тоді — завдання власне збирання. Build також вибрана як мета за умовчанням. Це означає, що вона буде виконана при обробці даного сценарію без явної вказівки мети.

<?xml version="1.0"?>
<project default="build">
    <!-- Build application  -->
    <target name="build" depends="clean" description="Builds the application">
        <!-- Creates directories -->
        <mkdir dir="${build.classes}"/>

        <!-- Compiles the source files -->
        <javac srcdir="${java.dir}"
               destdir="${build.classes}"
               debug="false"
               deprecation="true"
               optimize="true" >
            <classpath refid="classpath" />
        </javac>

        <!-- Copies the required files -->
        <copy todir="${build.classes}">
            <fileset dir="${java.dir}">
                <include name="**/*.properties" />
                <include name="**/*.gif" />
            </fileset>
        </copy>

        <!-- Creates the JAR-File -->
        <jar jarfile="${build.lib}/${name}.jar" manifest="${manifest}">
            <fileset dir="${build.classes}"/>
        </jar>
    </target>

    <!-- Cleans up  -->
    <target name="clean" description="Removes all temporary files">
        <!-- Erases files -->
        <delete dir="${build.dir}" />
        <delete dir="${dist.base}" />
        <delete dir="${defaultdist.dir}" />
        <delete> 
            <fileset dir="." includes="**/*~" defaultexcludes="no"/>
        </delete>
    </target>
</project>

Дивись також

  • Apache Maven — сучасніший інструмент з схожими завданнями

Посилання

  1. [ANN Apache Ant 1.9.16 and 1.10.11 Released] — 2021.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.