Why intelliJ IDEA dependency scope is “provided” i

2019-01-24 06:06发布

问题:

I would like IntelliJ IDEA to have my libraries as "compile" scope instead of "provided" scope. This is a part of my gradle file:

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'
}

The scope always reverts to "provided" in the dependency tab which is very annoying:

I am running: IntelliJ IDEA 2016.3.4 Build #IC-163.12024.16, built on January 31, 2017 JRE: 1.8.0_112-release-408-b6 x86_64

回答1:

It's a known issue in IntelliJ IDEA that is specific to Gradle 3.4:

  • IDEA-167412 Gradle 3.4-rc-1 changes compile dependencies to provided
  • original bug report in the Gradle project with more details
  • comment from the responsible developer regarding "Create Module per source set" option and how Gradle integration works in IntelliJ IDEA

It's already fixed in 2017.1 EAP build.

You can use Gradle 3.3 or older as a workaround until IDEA 2017.1 is released.