2

私のAntビルドでは、maven-ant-tasksを使用してプロジェクトの依存関係をプルしています。ビルドは比較的複雑で、さまざまな場所でさまざまなアーティファクトを移動/操作します。私の生活を楽にするために、antスクリプト内の依存関係からMavenバージョンラベルを削除したいと思います。maven-antのドキュメントには、依存関係タスクのversionsIdプロパティを使用してこれを実行できると記載されていますが、antでそれを行う方法がわかりません。

私のビルドの関連部分は

 <artifact:pom id="mypom" file="pom.xml"/>
 <artifact:dependencies pathId="dep.classpath" filesetId="dep.fileset" pomRefId="mypom" useScope="compile" settingsFile="${maven.home}\conf\settings.xml" versionsId="dep.versions"/>

 <copy todir="${lib.dir}" flatten="true" overwrite="true">
    <fileset refid="${dep.fileset}"/>
 </copy>

この呼び出しの後、dep.versions変数は、すべてのバージョンラベルのセミコロンで区切られたリストを保持します。ただし、ラベルをきれいに削除する方法がわかりません。

ありがとう

4

1 に答える 1

1

OK、みんな、これが私がこれを解決した方法です

Mavenには、バージョンラベルを削除するmaven-ant-tasksとともに配布されるカスタムマッパーがあります。依存関係タグからversionIds変数を渡すことができます。

<artifact:pom id="mypom" file="pom.xml"/>
<artifact:dependencies pathId="dep.classpath" filesetId="dep.fileset" pomRefId="mypom" useScope="compile" settingsFile="${maven.home}\conf\settings.xml" versionsId="dep.versions"/>

<copy todir="${lib.dir}" flatten="true" overwrite="true">
  <fileset refid="${dep.fileset}"/>
  <mapper classname="org.apache.maven.artifact.ant.VersionMapper" from="${dep.versions}" to="flatten" />
</copy>

ANT_HOME / libにmaven-ant-tasksをインストールしなかった場合は、マッパーでもクラスパスを定義する必要があります。

于 2011-11-14T20:50:37.470 に答える