我正在尝试使用Ivy来管理现有Ant项目中的依赖关系(这是第一次)。它没有下载某些运行时依赖项。
我尝试了各种配置-尽管与Maven相比我不确定它们的含义。 (我确实根据另一种SO中的建议查看了https://www.symphonious.net/2010/01/25/using-ivy-for-dependency-management/,但这没有帮助。)
以下测试Ant脚本通过使用Ivy和Maven下载相同的依赖项来说明此问题:
<project name="ivy-test" default="copy-deps" basedir="."
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="ivy.lib.dir" value="ivy-lib" />
<property name="mvn.lib.dir" value="mvn-lib" />
<target name="clean">
<delete dir="${ivy.lib.dir}" />
<delete dir="${mvn.lib.dir}" />
</target>
<target name="copy-deps" depends="ivy-copy, mvn-copy" />
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="ivy-2.4.0.jar"/>
<target name="ivy-copy">
<mkdir dir="${ivy.lib.dir}" />
<ivy:resolve type="jar" conf="default->*">
<dependency org="net.sf.okapi.filters" name="okapi-filter-openxml" rev="0.36" />
</ivy:resolve>
<ivy:retrieve type="jar" />
</target>
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant"
classpath="maven-ant-tasks-2.1.3.jar" />
<target name="mvn-copy">
<mkdir dir="${mvn.lib.dir}" />
<artifact:dependencies filesetid="mvn.fileset">
<dependency groupid="net.sf.okapi.filters" artifactId="okapi-filter-openxml" version="0.36" scope="runtime" />
</artifact:dependencies>
<copy todir="${mvn.lib.dir}">
<fileset refid="mvn.fileset" />
<mapper type="flatten" />
</copy>
</target>
</project>
如果比较Ivy和Maven目录的内容,则Ivy缺少三个JAR。
$ ls mvn-lib | while read i; do [ ! -f ivy-lib/$i ] && echo $i; done
common-lang-3.3.2.jar
snakeyaml-1.21.jar
stax2-api-3.1.4.jar
任何帮助将不胜感激。