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