ivy 检索导致“找不到模块:org.slf4j#slf4j-api;${slf4j.version}”

2024-03-06

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

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

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

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

<!-- 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} - 是一个由于某种原因未实例化的变量。可能会错过构建.属性/ivy.属性,或者这个变量应该直接定义在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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ivy 检索导致“找不到模块:org.slf4j#slf4j-api;${slf4j.version}” 的相关文章

随机推荐