Eclipse忽略Maven测试范围的依赖项

问题描述 投票:0回答:1

我有一个使用SLF4J的Maven项目。为了从Eclipse运行它,我希望将日志输出发送到控制台,因此我已如下配置依赖项:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>

也就是说,我将slf4j-simple范围插入test

该项目是一个图书馆。在其test文件夹中,有一个带有main方法的类,该类运行一些测试和诊断功能。当我从Eclipse以这种方式运行它时,SLF4J将按预期记录到System.err

[当我在另一个项目中使用该库项目(其主类位于该项目的src文件夹中时,SLF4J出现以下错误:]]

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

我已经尝试将相同的依赖项添加到父项目,但无济于事。但是,如果我在父项目中将slf4j-simple的范围更改为compileruntime,则日志记录将按预期工作。

这里发生了什么?此行为是否与主类所在的源树有关(test表示我正在测试,因此引入了测试范围的依赖项,src表示常规运行时和测试范围的依赖项不可用) ?如果是这样,如何在Eclipse中运行时告诉我的工具链我想要slf4j-simple,而在构建用于部署的JAR时告诉我其他后端?

我有一个使用SLF4J的Maven项目。为了从Eclipse运行它,我希望将日志输出发送到控制台,因此我已如下配置依赖项:<...>[]]

Eclipse是否使用测试或运行时依赖项取决于项目设置。要更改它,请转到
Project> Properties> Java Build Path> Source
包含测试源(您的项目的子项)是您要查找的设置。如果设置为

Yes,则Eclipse将使用测试范围的依赖关系,否则将不使用。

对于在test树中具有代码的项目,似乎是默认的,对于其他所有项目,则不是。
根据需要更改设置,应用,关闭并运行-Eclipse将为您提供所需的依赖项集。我可能忽略了其他相关设置,在这种情况下,请随意发表评论。

java eclipse maven dependency-management
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.