Yes,则Eclipse将使用测试范围的依赖关系,否则将不使用。
对于在test
树中具有代码的项目,似乎是默认的,对于其他所有项目,则不是。我有一个使用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
的范围更改为compile
或runtime
,则日志记录将按预期工作。
这里发生了什么?此行为是否与主类所在的源树有关(test
表示我正在测试,因此引入了测试范围的依赖项,src
表示常规运行时和测试范围的依赖项不可用) ?如果是这样,如何在Eclipse中运行时告诉我的工具链我想要slf4j-simple
,而在构建用于部署的JAR时告诉我其他后端?
我有一个使用SLF4J的Maven项目。为了从Eclipse运行它,我希望将日志输出发送到控制台,因此我已如下配置依赖项: Yes,则Eclipse将使用测试范围的依赖关系,否则将不使用。test
树中具有代码的项目,似乎是默认的,对于其他所有项目,则不是。