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

好的,伙计们,这就是我解决这个问题的方法

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 回答