java - 为什么 IntelliJ IDEA 依赖范围是 "provided"而不是 "compile"?

标签 java intellij-idea gradle

我希望 IntelliJ IDEA 将我的库作为“编译”范围而不是“提供”范围。这是我的 gradle 文件的一部分:

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    // Logging
    compile 'ch.qos.logback:logback-classic:1.2.1'
    compile 'com.getsentry.raven:raven-logback:7.8.2'

    // BigQuery
    compile 'com.google.api-client:google-api-client:1.20.0'
    compile 'com.google.apis:google-api-services-bigquery:v2-rev227-1.20.0'

    // Configuration management
    compile 'commons-configuration:commons-configuration:1.10'

    //Json
    compile 'org.json:json:20160810'

    //Kafka
    compile "org.apache.kafka:kafka-clients:0.10.1.1"

    testCompile group: 'junit', name: 'junit', version: '4.12'
    testCompile 'org.assertj:assertj-core:3.0.0'
    testCompile 'org.mockito:mockito-all:1.10.19'
}

task wrapper(type: Wrapper) {
    gradleVersion = '3.4'
}

范围总是在依赖选项卡中恢复为“提供”,这很烦人:

enter image description here

我在运行:
IntelliJ IDEA 2016.3.4
构建 #IC-163.12024.16,于 2017 年 1 月 31 日构建
JRE:1.8.0_112-release-408-b6 x86_64

最佳答案

这是 IntelliJ IDEA 中特定于 Gradle 3.4 的一个已知问题:

  • IDEA-167412 Gradle 3.4-rc-1 将编译依赖项更改为提供的
  • original bug report in the Gradle project with more details
  • comment from the responsible developer关于“为每个源集创建模块”选项以及 Gradle 集成如何在 IntelliJ IDEA
  • 中工作

    已在 2017.1 EAP build 中修复.

    在 IDEA 2017.1 发布之前,您可以使用 Gradle 3.3 或更早版本作为解决方法。

    关于java - 为什么 IntelliJ IDEA 依赖范围是 "provided"而不是 "compile"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496309/

    相关文章:

    java - 无法为连接 URL null 创建类的 JDBC 驱动程序

    spring - gradle 无法推断布局错误

    java - 无法解决依赖关系conciseclock

    gradle - 如何让我的自定义gradle任务运行?

    java - Clojure 关键字在内存中的大小是多少?

    java - SceneBuilder(由 gluon 提供)不显示导入的字体

    在 vaadin 项目中找不到 JavaScript 文件

    clojure - La Clojure Repl 为 dll 设置 java.library.path

    java - 同时接受多个IntellijIdea的检查建议(都是同类型)

    java - 如何优化 REST API 调用