0

我有一个非常棒的任务,它填充了一个路径 id ......

    <ivy:cachepath organisation="XXXX" module="ZZZZ" revision="0.2.4-SNAPSHOT" inline="true"  pathid="mypath"/>

在不编写复杂的 Java 代码的情况下,有没有办法将“mypath”转换为 ant 任务可以接受的东西?我真的很想专门删除这些缓存文件(我正在解决 Ivy 中的一个错误,它实际上并没有重新获取快照)。

4

2 回答 2

1

这对我有用:

<path id="test">
    <pathelement path="${basedir}/foo"/>
    <pathelement path="${basedir}/bar"/>
</path>
<delete>
    <path refid="test"/>
</delete>

我没有使用<ivy:cachepath/>,但我确实创建了一个路径 ID,并且能够使用路径作为 refid 删除各个元素。

于 2013-07-16T23:12:57.343 回答
0

不明白你想做什么。大多数 ANT 任务接受类路径引用,这是 ivy cachpath 任务创建的。其次,从常春藤缓存中删除文件似乎是可疑的......有点违背了使用常春藤的目的:-)

但是你问了,所以我建议使用 ivy 检索,如下所示:

  <ivy:retrieve pattern="${build.dir}/lib/[artifact](-[classifier]).[ext]">
     <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="default"/>
     <dependency org="org.slf4j" name="slf4j-simple" rev="1.7.5" conf="default"/>
  </ivy:retrieve>

  <path id="mypath">
     <fileset dir="${build.dir}/lib" includes="*.jar"/>
  </path>

笔记:

  • 嵌套依赖声明需要 ivy > 2.3.0

更新 1

我怀疑您的常春藤“错误”获取快照实际上是您的常春藤设置文件的问题。只有ibilio解析器了解 Maven 跟踪快照的内部机制。有关“m2compatible”和“useMavenMeta”选项的更多信息,请阅读。

更新 2

您是否将常春藤中的快照发布到像 Nexus 这样的 Maven 存储库中?

是的...这是一个已知问题。要考虑的可能解决方法如下:

我的建议是避免快照发布,除非您需要使用 Maven 项目。ivy 有一个很棒的 buildnumber 任务,它可以让生成独特的 build 变得轻而易举。意见不一。

于 2013-07-16T19:11:13.893 回答