首页 > 解决方案 > 为什么 Intellij IDEA 社区编译使用仅运行时依赖项的代码?

问题描述

注意:可以基于包禁用导入建议。这不是我正在寻找的功能。

我试图通过将传递依赖项标记为仅运行时依赖项来整理 Intellij IDEA CE 中的智能感知/自动完成建议。作为一个具体的例子,假设我想从下面的窗口中删除臭名昭著的 hamcrest 建议:

杂乱的建议

当我使用 Gradle 时,我想我可以通过创建依赖而不是依赖来解决org.hamcrest:hamcrest-core:1.3这个testRuntimeOnly问题testImplementation。正如预期的那样,在将 Gradle 项目重新导入 IDE 后,它在 IntelliJ 模块中被正确标记为“运行时”依赖项:

在此处输入图像描述

但是,这并不能阻止智能感知从排除的库中提出建议。更糟糕的是,使用“运行时”作用域库的代码实际上是使用 IDE 工具链编译的,但是由于该库被正确地从编译类路径中排除,因此 gradle 构建失败。

那时,我验证了我可以使用任何“运行时”范围依赖项中的任何代码,并且 IDE 不会有问题。

我在这里错过了什么吗?如果“运行时”范围不阻止我直接依赖代码,那么它的意义何在?

注意:我将 Kotlin 用于 JVM,即我的源代码是 Kotlin,但依赖项是 Java。

标签: javaintellij-ideakotlindependency-management

解决方案


推荐阅读