«1. Введение

Maven и Ant — хорошо известные инструменты автоматизации сборки для Java. Хотя большую часть времени мы будем использовать только один из них, бывают случаи, когда использование двух вместе имеет смысл.

Обычный вариант использования — работа над унаследованным проектом, в котором используется Ant, и мы хотим постепенно вводить Maven, сохраняя при этом некоторые существующие задачи Ant.

В этом уроке мы расскажем, как это сделать с помощью плагина Maven AntRun.

2. Плагин Maven AntRun

Плагин Maven AntRun позволяет нам запускать задачи Ant в Maven.

2.1. Добавление подключаемого модуля

Чтобы использовать этот подключаемый модуль, нам нужно добавить его в подключаемые модули сборки нашего проекта Maven:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        ...
    </executions>
</plugin>

Последнюю версию подключаемого модуля можно найти на Maven Central (хотя она не была обновлена ​​в много времени).

2.2. Исполнения плагинов

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

В приведенном ниже примере мы определяем одно выполнение, привязанное к фазе пакета Maven, которое заархивирует окончательный файл JAR из целевого каталога проекта:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ant-run-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <id>zip-artifacts</id>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <zip destfile="${project.basedir}/package.zip" 
                       basedir="${project.build.directory}" 
                       includes="*.jar" />
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>

Чтобы выполнить плагин, мы запускаем команду: ~ ~~

mvn package

Поскольку мы объявили, что наш подключаемый модуль будет работать на этапе пакета Maven, выполнение цели пакета Maven приведет к выполнению нашей конфигурации подключаемого модуля, указанной выше.

3. Пример использования файла build.xml

Помимо возможности определять цели Ant в конфигурации подключаемого модуля, мы также можем использовать существующий файл Ant build.xml.

3.1. build.xml

Ниже приведен пример файла Ant build.xml проекта с целью, определенной для загрузки zip-файлов из базового каталога проекта на FTP-сервер:

<project name="MyProject" default="dist" basedir=".">
   <description>Project Description</description>

   ...
   
    <target name="ftpArtifact">
        <ftp 
          server="${ftp.host}" 
          userid="${ftp.user}" 
          password="${ftp.password}">
            <fileset dir="${project.basedir}>
                <include name="**/*.zip" />
            </fileset>
        </ftp>
    </target>
</project>

3.2. Конфигурация подключаемого модуля

Чтобы использовать приведенный выше файл build.xml, мы определяем выполнение в объявлении нашего подключаемого модуля:

<execution>
    <id>deploy-artifact</id>
    <phase>install</phase>
    <goals>
        <goal>run</goal>
    </goals>
    <configuration>
        <target>
            <ant antfile="${basedir}/build.xml">
                <target name="ftpArtifact"/>
            </ant>
        </target>
    </configuration>
</execution>

Поскольку задача ftp не включена в ant.jar, нам нужно добавить необязательные зависимости Ant в конфигурация нашего плагина:

<plugin>
    <executions>
       ...
    </executions>
    <dependencies>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-commons-net</artifactId>
            <version>1.8.1</version>
        </dependency>
    </dependencies>
</plugin>

Чтобы запустить плагин, мы запускаем команду:

mvn install

4. Заключение

В этой короткой статье мы обсудили выполнение задач Ant с помощью плагина Maven AntRun. Несмотря на то, что это очень простой плагин, преследующий только одну цель, этот плагин может оказаться эффективным в проектах и ​​командах, которые предпочитают использовать Ant для конкретных инструкций по сборке.

И, если вы хотите узнать больше об Ant и Maven, вы можете прочитать нашу статью о сравнении этих двух — вместе с Gradle.