gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:02:50 24 4
gpt4 key购买 nike

我有一个使用 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>

也就是说,我正在使用 test 范围引入 slf4j-simple

该项目是一个库。在其 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 时需要其他后端?

最佳答案

Eclipse 是否使用测试依赖项或运行时依赖项由项目设置控制。要更改它,请转到项目 > 属性 > Java 构建路径 > 源包含测试源(项目的子项目)是您正在寻找的设置。如果设置为,Eclipse 将使用测试范围的依赖项,否则不会。

"is"似乎是在 test 树中包含代码的项目的默认设置,对于所有其他项目,“否”。

根据需要更改设置、应用、关闭并运行 - Eclipse 将为您提供所需的依赖项集。

可能还有我忽略的其他相关设置 - 在这种情况下请随意发表评论。

关于java - Eclipse 忽略 Maven 测试范围的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61490059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com