Java ivy build-不同版本的多个工件

Java ivy build-不同版本的多个工件,java,ivy,Java,Ivy,我们最近开始将ant ivy用于java Web应用程序,到目前为止,这一过程非常顺利。我为所有依赖项指定了transitive='false',并将log4j版本1.2.16列为依赖项。我必须使用log4j的最新版本,因为我依赖于增强的模式布局 主要问题-在构建项目时,ivy lib文件夹中有多个版本的log4j。在Eclipse中查看PackageExplorer时,我看到了正确的版本,似乎它只从ivycachepath下载了1.2.16 有什么建议吗?我是否需要逐个删除每个依赖项并查看哪个

我们最近开始将ant ivy用于java Web应用程序,到目前为止,这一过程非常顺利。我为所有依赖项指定了transitive='false',并将log4j版本1.2.16列为依赖项。我必须使用log4j的最新版本,因为我依赖于增强的模式布局

主要问题-在构建项目时,ivy lib文件夹中有多个版本的log4j。在Eclipse中查看PackageExplorer时,我看到了正确的版本,似乎它只从ivycachepath下载了1.2.16

有什么建议吗?我是否需要逐个删除每个依赖项并查看哪个依赖项会带来旧版本


感谢您的帮助。

我提供了一个ant构建示例,它将log4j作为依赖项下载到名为“lib”的本地目录中

正如您所看到的,只有一个版本的jar存在。希望这有助于诊断您的问题

编译文件

ivy.xml


您能否演示一下构建文件的外观。有几件事让我困惑。例如,“常春藤图书馆”是什么意思?第二,关闭可传递依赖项是您的权利,但是您将失去使用依赖项管理的主要好处之一。您是否在每次解析之前删除/清除lib文件夹?Ivy不会删除旧工件,除非您为检索任务指定sync=“true”。
$ ant
$ find lib
lib
lib/log4j-1.2.16.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>