首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么logback-经典不下载slf4j-api在我的常春藤设置?

为什么logback-经典不下载slf4j-api在我的常春藤设置?
EN

Stack Overflow用户
提问于 2018-06-30 10:19:20
回答 2查看 1.6K关注 0票数 3

我试图使用slf4j-api插件将logback-classiclogback-classic依赖项添加到Eclipse中,但是我所需要的jars没有出现在Ivy Library类路径条目中--我只获取logback-classic-1.2.3.jar而不是logback-core-1.2.3.jarslf4j-api-1.7.25.jar

我的ivy.xml看起来是这样的:

代码语言:javascript
复制
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info organisation="foo" module="bar" status="integration"/>
    <dependencies>
        <dependency org="ch.qos.logback" name="logback-classic" rev="1.2.3" conf="*->default"/>
    </dependencies>
</ivy-module>

常春藤控制台说我应该让他们出现:

代码语言:javascript
复制
[IvyDE] Resolve job starting...
[IvyDE] Processing resolve request ivy.xml[*] in test-ivyde
[IvyDE] 1 module(s) to resolve outside the workspace
[IvyDE] Resolving ivy.xml[*] in test-ivyde
:: resolving dependencies :: foo#bar;working@k
    confs: [default]
    found ch.qos.logback#logback-classic;1.2.3 in public
    found ch.qos.logback#logback-core;1.2.3 in public
    found org.slf4j#slf4j-api;1.7.25 in public
:: resolution report :: resolve 14ms :: artifacts dl 2ms
    ---------------------------------------------------------------------
    |                  |            modules            ||   artifacts   |
    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
    ---------------------------------------------------------------------
    |      default     |   3   |   0   |   0   |   0   ||   3   |   0   |
    ---------------------------------------------------------------------
[IvyDE] Successuful resolve of ivy.xml[*] in test-ivyde

但我的常春藤图书馆是这样的:

slf4j-api添加单独的依赖关系不会改变任何事情,但是我不应该添加它,因为它是logback-classic的传递依赖,对吗?

是什么导致IvyDE不能像我想的那样工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-31 11:22:01

也有同样的问题,并找到了根本原因,但我不知道为什么logback-classic的常春藤文件中的设置是这样的:

代码语言:javascript
复制
<artifact name="logback-core" type="test-jar" ext="jar" conf="" m:classifier="tests"/>
<artifact name="slf4j-api" type="test-jar" ext="jar" conf="" m:classifier="tests"/>

有问题的部分是这个type="test-jar",您通常只有"jar" (我还为com.google.guava#guava找到了type="bundle" )。

通过比较这两个命令,您可以看到添加此类型的效果:

代码语言:javascript
复制
java -jar ivy-2.5.0-rc1.jar -confs default -dependency ch.qos.logback logback-classic 1.2.3 -retrieve "[conf]-[type]-[artifact]-[revision].[ext]" -types jar
java -jar ivy-2.5.0-rc1.jar -confs default -dependency ch.qos.logback logback-classic 1.2.3 -retrieve "[conf]-[type]-[artifact]-[revision].[ext]" -types jar test-jar

第一个得到1个神器,第二个按预期得到全部3个。另外,常春藤属性ivy.resolve.default.type.filter也用于相同的事情。

顺便说一句,test-jar来自logback的官方Maven POM文件-经典版:

代码语言:javascript
复制
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <type>test-jar</type>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <type>test-jar</type>
    <version>${slf4j.version}</version>
    <scope>test</scope>
</dependency>

您还可以通过将transitive="false"添加到logback-classic条目,然后将logback-coreslf4j-api显式地添加到您的Ivy文件中,从而关闭传递依赖项检查。

票数 2
EN

Stack Overflow用户

发布于 2018-07-03 06:52:19

删除conf="*->default"部件在ivy.xml中,这将完成它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51113989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档