gpt4 book ai didi

ant - Ivy 检索导致 "module not found: org.slf4j#slf4j-api;${slf4j.version}"

转载 作者:行者123 更新时间:2023-12-02 03:30:20 27 4
gpt4 key购买 nike

我的问题是,为什么我能够从公共(public) ivy 存储库中提取一些依赖项,而不是全部?

我正在使用 ant build.xml 脚本来调用 ivy:retrieve 命令。这是我的 ivy.xml 文件中的相关行,为了清楚起见,我在其中删除了所有其他依赖项:

<dependencies>
<dependency org="log4j" name="log4j" rev="1.2.16"/>
</dependencies>

这是从我的 ivysettings.xml 文件中给出的公共(public)存储库中提取的

<!-- General public repository !-->
<ibiblio name="public" m2compatible="true"/>

它设法引入了一些依赖项,所以我知道它正在正确访问 ibiblio 存储库。但是构建失败并出现以下错误:

[ivy:retrieve] 
[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve] module not found: org.slf4j#slf4j-api;${slf4j.version}
[ivy:retrieve] ==== public: tried
[ivy:retrieve] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.pom
[ivy:retrieve] -- artifact org.slf4j#slf4j-api;${slf4j.version}!slf4j-api.jar:
[ivy:retrieve] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.jar
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: UNRESOLVED DEPENDENCIES ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: org.slf4j#slf4j-api;${slf4j.version}: not found
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

出于某种原因,它无法获取 slf4j 的 jar 依赖项。为什么会这样?如果有帮助,我让一位同事在他们的工作站上使用相同版本的 ant 和 ivy 运行相同的 build.xml 文件,并且他们的构建成功了。如有必要,我可以提供有关我们开发环境的更多信息。

最佳答案

如果您仔细查看控制台输出,您会看到:

[ivy:retrieve]  ==== public: tried
[ivy:retrieve] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.pom
[ivy:retrieve] -- artifact org.slf4j#slf4j-api;${slf4j.version}!slf4j-api.jar:
[ivy:retrieve] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.jar
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: UNRESOLVED DEPENDENCIES ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: org.slf4j#slf4j-api;${slf4j.version}: not found
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::

您试图解析位于的资源:

[ivy:retrieve]    http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.pom

和 ${slf4j.version} - 是一个由于某种原因没有被实例化的变量。可能遗漏了 build.properties/ivy.properties,或者应该直接在 build.xml/ivy.settings/ivysettings.xml/whatever_file_define_resolve_variables.xml 中定义这个变量。但是因为它没有定义 ivy 试图让资源正好位于

http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.pom

而不是类似的东西

http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.9/slf4j-api-1.7.9.pom

因此,要运行 resolve,您应该以某种方式定义名为“slf4j.version”的变量。尝试搜索如何为 ivy 或 ant 定义变量。有不同的方法可以做到这一点。

关于ant - Ivy 检索导致 "module not found: org.slf4j#slf4j-api;${slf4j.version}",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27263985/

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