常春藤检索导致"模块未找到:org.slf4j#SLF4J的API; $ {slf4j.version}" [英] ivy retrieve leads to "module not found: org.slf4j#slf4j-api;${slf4j.version}"

查看:356
本文介绍了常春藤检索导致"模块未找到:org.slf4j#SLF4J的API; $ {slf4j.version}"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是,为什么我能够从一些拉依赖关系,但不是所有的公立常春藤的回购?

我使用的是蚂蚁的build.xml脚本调用常春藤:获取命令。这是从我的ivy.xml文件,在那里我已删除了所有其他相关性为清晰起见,相关线路:

 <依赖和GT;
    <依赖有机=log4j的NAME =log4j的转=1.2.16/>
< /依赖和GT;

这是从我的ivysettings.xml文件中给出的一个公共仓库拉

 <! - 通用公共仓库 - >
    < ibiblio上的名字=公m2compatible =真/>

它管理的一些相关性的拉,所以我知道这是正确的访问ibiblio上回购。但是构建失败,出现以下错误:

  [常春藤:检索]
[常春藤:检索] ::问题总结::
[常春藤:检索] ::::警告
[常春藤:检索]模块未找到:org.slf4j#SLF4J的API; $ {} slf4j.version
[常春藤:检索] ====市民:尝试
[常春藤:检索] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.pom
[常春藤:检索] - 神器org.slf4j#SLF4J的API; $ {} slf4j.version SLF4J-api.jar文件:
[常春藤:检索] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.jar
[常春藤:检索] ::::::::::::::::::::::::::::::::::::::::::::: :
[常春藤:检索] ::未解决的依赖::
[常春藤:检索] ::::::::::::::::::::::::::::::::::::::::::::: :
[常春藤:检索] :: org.slf4j#SLF4J的API; $ {} slf4j.version:未找到
[常春藤:检索] ::::::::::::::::::::::::::::::::::::::::::::: :
[常春藤:检索]
[常春藤:检索] ::使用详细或调试消息级别的更多产品细节

由于某种原因不能抢SLF4J的jar依赖。这究竟是为什么?如果有帮助,我有一个同事使用的蚂蚁和常春藤同一版本的工作站上运行相同的build.xml文件,构建成功他们。我可以提供关于如果有必要我们的开发环境的详细信息。


解决方案

如果你看看密切合作,以控制台输出,你会看到,在行:

  [常春藤:检索] ====市民:尝试
[常春藤:检索] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.pom
[常春藤:检索] - 神器org.slf4j#SLF4J的API; $ {} slf4j.version SLF4J-api.jar文件:
[常春藤:检索] http://repo1.maven.org/maven2/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.jar
[常春藤:检索] ::::::::::::::::::::::::::::::::::::::::::::: :
[常春藤:检索] ::未解决的依赖::
[常春藤:检索] ::::::::::::::::::::::::::::::::::::::::::::: :
[常春藤:检索] :: org.slf4j#SLF4J的API; $ {} slf4j.version:未找到
[常春藤:检索] ::::::::::::::::::::::::::::::::::::::::::::: :

您尝试解决位于资源:

  [常春藤:检索] 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 的定义。
但由于它不是常春藤试图让位于恰好资源定义

<$p$p><$c$c>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某种方式。试图寻找如何定义变量常春藤或蚂蚁。有不同的方法来做到这一点。

My question is, why am I able to pull dependencies from some, but not all, of the public ivy repos?

I am using an ant build.xml script to call the ivy:retrieve command. Here is the relevant line from my ivy.xml file, where I have removed all of the other dependencies for clarity:

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

which is being pulled from a public repository given in my ivysettings.xml file

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

It manages to pull in some of the dependencies, so I know it's accessing the ibiblio repos correctly. However the build fails with the following error:

[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

for some reason it cannot grab the jar dependency for slf4j. Why is this happening? If it helps, I've had a coworker run the same build.xml file using the same version of ant and ivy on their workstation, and the build is successful for them. I can provide more info about our dev environments if necessary.

解决方案

If you take a look closely to console output you will see that in line:

[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]      ::::::::::::::::::::::::::::::::::::::::::::::

you trying to resolve resource located at:

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

and ${slf4j.version} - is a variable that was not instantiated for some reason. May be missed build.properties/ivy.properties, or this variable should be defined directly in build.xml/ivy.settings/ivysettings.xml/whatever_file_define_resolve_variables.xml. But since it was not defined ivy trying to get resource located at exactly

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

instead of something like

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

So to get resolve running you should define variable called 'slf4j.version' some way. Try to search how to define variables for ivy or for ant. There is different ways to do that.

这篇关于常春藤检索导致&QUOT;模块未找到:org.slf4j#SLF4J的API; $ {slf4j.version}&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆