gpt4 book ai didi

java - 在依赖项的海洋中更喜欢最新的 jar (java)

转载 作者:行者123 更新时间:2023-11-30 07:27:20 25 4
gpt4 key购买 nike

我有一个大型 Ivy 项目,我注意到我的代码在 eclipse 中运行良好,但在 ant 中运行时会导致编译错误。我已将问题缩小到以下行:

FileUtils.write(...). 

此行失败 - 在编译期间 --- 根本找不到该方法。显然,我的代码依赖于 apache 的 commons-io 库。很明显,当前的 commons-io 有这种方法。

http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html

那么是什么给了?

我很确定这与我的 ivy.xml 有关 -> eclipse 编译器幸运地(或巧妙地)使用了最新的 commons-io 版本,而我的 ivy.xml 使用的是缺少此方法的旧版本.

最重要的是 ant 显然使用了这个 jar 的不同版本。

所以 - 我的问题是:

1) 我如何告诉 ant/ivy 优先使用我指定的最新版本的库编译我的代码?我假设我的 lib/中的一些依赖项可能依赖于旧版本的 commons-io .....

还有:

2) 在这种情况下,关于类加载器如何处理依赖多 jar 的项目中的重复项的任何提示也会对我有所帮助 ...

最佳答案

依赖报告

我建议您首先使用 report task 将 ivy 依赖项报告的生成添加到您的构建中.

以下答案中包含此任务的示例:

What is the Ivy equivalent of Maven's versions:display-dependency-updates?

这将告诉您正在使用的 jar 的版本。通常,ivy 将使用您在 ivy.xml 文件中指定的版本,但是,另一个模块可能依赖于更新的版本。 Ivy 的默认行为是始终支持最新版本的 Maven 模块。

获取最新的依赖

如果你希望 ivy 总是喜欢特定库的最新版本,那么声明依赖如下:

<dependency org="commons-io" name="commons-io" rev="latest.release"/>

关于java - 在依赖项的海洋中更喜欢最新的 jar (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9782180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com