大きめの商品にはmavenを使用しています。すべてのアーティファクトは、mavenデプロイ目標を使用して、共有アーカイブリポジトリにデプロイされます。現在、antビルドを含むサードパーティ製品を統合しています。私はantrunプラグインを使用してmavenからantターゲットを呼び出す方法を知っていますが、このインスタンスでpomを設定する方法がわかりません。 Mavenが実際にアーティファクトを生成するのは望ましくありませんが、Mavenのデプロイ目標の実行時にantによって作成されたアーティファクトをプルしたいのです。
私はpomをbuild.xmlに隣接させることを計画しています。 pomは、パッケージ目標のantrunプラグインを使用して、適切なタイミングでantターゲットを呼び出し、.warアーティファクトをビルドします。
質問:
a).warファイルを作成していますが、Mavenではなくantを介して作成されているため、pomにwarパッケージタイプを指定しても意味がありません。私のパッケージタイプはどうあるべきですか?
b)どのようにして、Mavenがデプロイ目標のant出力ディレクトリからアーティファクトをプルするのですか?
c)AとBに対する適切な回答がない場合、.warアーティファクトを共有リポジトリに取得するためのMavenデプロイ機能を複製するAntタスクはありますか?
maven-antrun-plugin を使用してAntビルドを呼び出すことができます。次に build-helper-maven-plugin を使用して、antによって生成されたjarをプロジェクトに接続します。添付されたアーティファクトは、pomと共にインストール/デプロイされます。
_pom
を使用してプロジェクトを指定した場合、MavenはAntビルドと競合しません。
以下の例では、ant build.xmlはsrc/main/antにあり、compile
ゴールを持ち、ant-output.jar
に出力されると想定されています。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<ant antfile="src/main/ant/build.xml" target="compile"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>add-jar</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/ant-output.jar</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
実際にANTプロジェクトをMavenでラップするには、別の質問で書いたように multiple ant run Goals を使用します。既存のAntプロジェクトにクリーンタスクとビルドタスクがあると想定すると、これはプロジェクトをラップして、Mavenの目標を使用して既存のAntコードにマッピングできる便利な方法になる場合があります。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>install-library</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>x.x</groupId>
<artifactId>ant-out-atifacts</artifactId>
<version>${project.version}</version>
<file>ant-output.jar</file>
<packaging>Zip</packaging>
</configuration>
</execution>
</executions>
</plugin>
これを参照してください: MavenまたはIvyの代わりにMaven Antタスクを使用する理由
具体的には、AntからMavenゴールを呼び出す方法を次の例に示します。
http://code.google.com/p/perfbench/source/browse/trunk/perfbench/grails-gorm/build.xml
上記の情報を使用すると、必要なことを達成できるはずです。ご不明な点がありましたらお知らせください。