1. 序章

MavenとAntはどちらも、Java用のよく知られたビルド自動化ツールです。 ほとんどの場合、これらの1つだけを使用しますが、2つを一緒に使用することが理にかなっている場合があります。

一般的な使用例は、Antを使用するレガシープロジェクトで作業する場合であり、既存のAntタスクをいくつか残したまま、Mavenを徐々に導入したいと考えています

このチュートリアルでは、MavenAntRunプラグインを使用してこれを行う方法について説明します。

2. Maven AntRunプラグイン

Maven AntRunプラグインを使用すると、Maven内でAntタスクを実行できます。

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のパッケージフェーズに関連付けられた1つの実行を定義しています。これにより、プロジェクトのターゲットディレクトリから最終的な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のpackageフェーズで実行するように宣言したため、Mavenの package ゴールを実行すると、上記のプラグイン構成が実行されます。

3. build.xmlファイルの使用例

プラグイン構成でAntターゲットを定義できるようにする以外に、既存のAnt build.xmlファイルを使用することもできます。

3.1.  build.xml

以下は、プロジェクトのベースディレクトリからFTPサーバーにzipファイルをアップロードするように定義されたターゲットを持つプロジェクトのAnt build.xmlファイルの例です。

<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. 結論

この短い記事では、MavenのAntRunプラグインを使用したAntタスクの実行について説明しました。 非常にシンプルなプラグインであり、目標は1つだけですが、このプラグインは、特定のビルド手順にAntを使用することを好むプロジェクトやチームで効果的であることがわかります。

また、AntとMavenについて詳しく知りたい場合は、の記事を読んで、これら2つをGradleと比較してください。