我们最近开始使用ant-ivy用于java webapp,到目前为止旅程一直很好。我为所有依赖项指定了transitive ='false',并将log4j版本1.2.16列为依赖项。我必须使用最新版本的log4j,因为我依赖于增强的模式布局。
主要问题 - 在构建项目时,ivy-lib文件夹中有多个版本的log4j。在查看Eclipse中的包浏览器时,我看到了正确的版本,看起来它只从ivycachepath下载1.2.16。
任何指针?我是否需要单独删除每个依赖项并查看哪个带来旧版本?
感谢您的帮助。
答案 0 :(得分:1)
我已经包含了一个示例ant build,它将log4j作为依赖项下载到名为“lib”的本地目录中。
$ ant
$ find lib
lib
lib/log4j-1.2.16.jar
正如您所看到的,只有一个版本的jar存在。希望这有助于诊断您的问题。
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="retrieve">
<property name="lib.dir" location="lib"/>
<property name="report.dir" location="report"/>
<target name="retrieve" description="Retrieve dependencies locally">
<ivy:retrieve pattern="${lib.dir}/[artifact]-[revision](-[classifier]).[ext]"/>
<ivy:report todir="${report.dir}" graph="false"/>
</target>
<target name="clean" description="Remove build directories">
<delete dir="${lib.dir}"/>
<delete dir="${report.dir}"/>
</target>
<target name="clean-all" depends="clean" description="clean ivy cache">
<ivy:cleancache />
</target>
</project>
<ivy-module version="2.0">
<info organisation="org.demo" module="demo"/>
<configurations defaultconfmapping="compile->default">
<conf name="compile" description="jars used for compilation"/>
</configurations>
<dependencies>
<dependency org="log4j" name="log4j" rev="1.2.16"/>
</dependencies>
</ivy-module>