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

标签 java ivy

我们最近开始在 Java Web 应用程序中使用 ant-ivy,到目前为止进展顺利。我已为所有依赖项指定transitive='false' 并将 log4j 版本 1.2.16 列为依赖项。我必须使用最新版本的 log4j,因为我依赖于增强的模式布局。

主要问题——项目构建时,ivy-lib文件夹下有多个版本的log4j。在 Eclipse 中查看包资源管理器时,我看到了正确的版本,并且似乎它仅从 ivycachepath 下载了 1.2.16。

有什么指点吗?我是否需要单独删除每个依赖项并查看哪个依赖项带来旧版本?

感谢您的帮助。

最佳答案

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

$ ant
$ find lib
lib
lib/log4j-1.2.16.jar

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

build.xml

<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.xml

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

关于java - ivy build - 不同版本的多个工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8855531/

相关文章:

c++ - C++中如何管理依赖关系

java - 我如何使用java获得多个单词的上位词

java - 使用类名调用不同类的方法

java - RandomAccessSubList 未序列化

java - gradle 传递依赖下载本地 ivy

scala - Logback 依赖性阻止 SBT 离线运行

apache-spark - 如何配置 spark-submit(或 DataProc)以从 GitHub 包下载 Maven 依赖项(jars)?

Grails 1.3.7 - build.xml 在哪里?

java - Spring Web Flow - 处理并发访问

java - BouncycaSTLe in Java奇数加密解密结果