java - 为什么 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。
解决方案
推荐阅读
- laravel - 从 google drive 读取 word 文档内容
- asp.net-mvc - 使用 .Net 中的 SMTP 客户端以 .msg 格式保存电子邮件
- google-cloud-platform - 工作流失败。原因:刷新凭据时出现问题
- c# - 写入输出消息(C# => TextBox)
- objective-c - 如何在 Objective-C 中访问 Settings.bundle 中的本地化字符串?
- curl - 网页抓取 - 菜鸟
- python - 创建满足以下先决条件的 Anaconda 环境
- android - 搜索栏没有显示缓冲辅助栏,当点击搜索栏时,视频视图没有跳到点击的位置
- python - pySerial - 更新太慢
- c++ - 有没有办法将 Lua 成员变量绑定为对该变量名称的 C/C++ 函数的调用