Intellij和gradle依赖性问题

Intellij和gradle依赖性问题,gradle,intellij-idea,build,dependencies,runtime,Gradle,Intellij Idea,Build,Dependencies,Runtime,今天,我面临一个真正的问题,我使用Intellij、Java8和Gradle从头开始了一个小项目。我对Gradle很陌生,学到了很多东西,但我目前被一个看似简单的问题所困扰: 我将我的项目分为几个模块,比如有一个主模块,其中有几个模块,如下所示: 它使用gradle clean build生成OK: 13:54:26: Executing task 'build'... :obd2-common:compileJava :obd2-common:processResources NO-SOU

今天,我面临一个真正的问题,我使用Intellij、Java8和Gradle从头开始了一个小项目。我对Gradle很陌生,学到了很多东西,但我目前被一个看似简单的问题所困扰:

我将我的项目分为几个模块,比如有一个主模块,其中有几个模块,如下所示:

它使用gradle clean build生成OK:

13:54:26: Executing task 'build'...

:obd2-common:compileJava
:obd2-common:processResources NO-SOURCE
:obd2-common:classes
:obd2-common:jar
:obd2-bt:compileJava
:obd2-bt:processResources
:obd2-bt:classes
:obd2-bt:jar
:obd2-net:compileJava NO-SOURCE
:obd2-net:processResources NO-SOURCE
:obd2-net:classes UP-TO-DATE
:obd2-net:jar
:obd2-simulator:compileJava
:obd2-simulator:processResources
:obd2-simulator:classes
:obd2-simulator:jar
:obd2-polling:compileJava
:obd2-polling:processResources
:obd2-polling:classes
:obd2-polling:jar
:compileJava NO-SOURCE
:processResources NO-SOURCE
:classes UP-TO-DATE
:jar
:assemble
:compileTestJava NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE
:check UP-TO-DATE
:build
:obd2-bt:assemble
:obd2-bt:compileTestJava NO-SOURCE
:obd2-bt:processTestResources NO-SOURCE
:obd2-bt:testClasses UP-TO-DATE
:obd2-bt:test NO-SOURCE
:obd2-bt:check UP-TO-DATE
:obd2-bt:build
:obd2-common:assemble
:obd2-common:compileTestJava NO-SOURCE
:obd2-common:processTestResources NO-SOURCE
:obd2-common:testClasses UP-TO-DATE
:obd2-common:test NO-SOURCE
:obd2-common:check UP-TO-DATE
:obd2-common:build
:obd2-net:assemble
:obd2-net:compileTestJava NO-SOURCE
:obd2-net:processTestResources NO-SOURCE
:obd2-net:testClasses UP-TO-DATE
:obd2-net:test NO-SOURCE
:obd2-net:check UP-TO-DATE
:obd2-net:build
:obd2-polling:assemble
:obd2-polling:compileTestJava NO-SOURCE
:obd2-polling:processTestResources NO-SOURCE
:obd2-polling:testClasses UP-TO-DATE
:obd2-polling:test NO-SOURCE
:obd2-polling:check UP-TO-DATE
:obd2-polling:build
:obd2-simulator:assemble
:obd2-simulator:compileTestJava NO-SOURCE
:obd2-simulator:processTestResources NO-SOURCE
:obd2-simulator:testClasses UP-TO-DATE
:obd2-simulator:test NO-SOURCE
:obd2-simulator:check UP-TO-DATE
:obd2-simulator:build

BUILD SUCCESSFUL in 0s
13 actionable tasks: 13 executed
13:54:27: Task execution finished 'build'.
但是由于一个未知但恼人的原因,IntelliJ不想在其中一个模块中运行main。此类包含对外部类(来自另一个子模块)的引用。代码中的IntelliJ说没问题,Gradle在构建时说没问题,但当我尝试运行代码和IntelliJ构建时,它失败了

以下是不同的build.gradle:

plugins {

    id 'java'
    id 'idea'
}

group 'tech.necko.obd2'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

task zip(type: Zip) {
    from configurations.runtime.allArtifacts.files
    from configurations.runtime
    into 'release'
}
plugins {
    id 'java'
    id 'idea'
}

group 'tech.necko.obd2'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile 'com.opencsv:opencsv:4.2'
    compile project(':obd2-common')
    compile project(':obd2-simulator')
    compile project(':obd2-bt')
    compile project(':obd2-net')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

jar {
    manifest {
        attributes 'Main-Class' : 'tech.necko.obd2.Poller'
    }
}
plugins {
    id 'java'
    id 'idea'
}

group 'tech.necko.obd2'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile project(':obd2-common')
    compile 'com.opencsv:opencsv:4.2'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
plugins {
    id 'java'
    id 'idea'
}

group 'tech.necko.obd2'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile project(':obd2-common')
}
plugins {
    id 'java'
    id 'idea'
}

group 'tech.necko.obd2'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
plugins {
    id 'java'
    id 'idea'
}

group 'tech.necko.obd2'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
  • 主模块(“obd2”):
  • build.gradle:

    plugins {
    
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    task zip(type: Zip) {
        from configurations.runtime.allArtifacts.files
        from configurations.runtime
        into 'release'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile 'com.opencsv:opencsv:4.2'
        compile project(':obd2-common')
        compile project(':obd2-simulator')
        compile project(':obd2-bt')
        compile project(':obd2-net')
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    jar {
        manifest {
            attributes 'Main-Class' : 'tech.necko.obd2.Poller'
        }
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile project(':obd2-common')
        compile 'com.opencsv:opencsv:4.2'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile project(':obd2-common')
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
  • obd2轮询
  • build.gradle:

    plugins {
    
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    task zip(type: Zip) {
        from configurations.runtime.allArtifacts.files
        from configurations.runtime
        into 'release'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile 'com.opencsv:opencsv:4.2'
        compile project(':obd2-common')
        compile project(':obd2-simulator')
        compile project(':obd2-bt')
        compile project(':obd2-net')
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    jar {
        manifest {
            attributes 'Main-Class' : 'tech.necko.obd2.Poller'
        }
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile project(':obd2-common')
        compile 'com.opencsv:opencsv:4.2'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile project(':obd2-common')
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
  • obd2模拟器:
  • build.gradle:

    plugins {
    
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    task zip(type: Zip) {
        from configurations.runtime.allArtifacts.files
        from configurations.runtime
        into 'release'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile 'com.opencsv:opencsv:4.2'
        compile project(':obd2-common')
        compile project(':obd2-simulator')
        compile project(':obd2-bt')
        compile project(':obd2-net')
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    jar {
        manifest {
            attributes 'Main-Class' : 'tech.necko.obd2.Poller'
        }
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile project(':obd2-common')
        compile 'com.opencsv:opencsv:4.2'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile project(':obd2-common')
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
  • obd2 bt
  • build.gradle:

    plugins {
    
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    task zip(type: Zip) {
        from configurations.runtime.allArtifacts.files
        from configurations.runtime
        into 'release'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile 'com.opencsv:opencsv:4.2'
        compile project(':obd2-common')
        compile project(':obd2-simulator')
        compile project(':obd2-bt')
        compile project(':obd2-net')
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    jar {
        manifest {
            attributes 'Main-Class' : 'tech.necko.obd2.Poller'
        }
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile project(':obd2-common')
        compile 'com.opencsv:opencsv:4.2'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile project(':obd2-common')
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
  • obd2网络
  • build.gradle:

    plugins {
    
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    task zip(type: Zip) {
        from configurations.runtime.allArtifacts.files
        from configurations.runtime
        into 'release'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile 'com.opencsv:opencsv:4.2'
        compile project(':obd2-common')
        compile project(':obd2-simulator')
        compile project(':obd2-bt')
        compile project(':obd2-net')
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    jar {
        manifest {
            attributes 'Main-Class' : 'tech.necko.obd2.Poller'
        }
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile project(':obd2-common')
        compile 'com.opencsv:opencsv:4.2'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile project(':obd2-common')
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
  • obd2普通
  • build.gradle:

    plugins {
    
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    task zip(type: Zip) {
        from configurations.runtime.allArtifacts.files
        from configurations.runtime
        into 'release'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile 'com.opencsv:opencsv:4.2'
        compile project(':obd2-common')
        compile project(':obd2-simulator')
        compile project(':obd2-bt')
        compile project(':obd2-net')
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    jar {
        manifest {
            attributes 'Main-Class' : 'tech.necko.obd2.Poller'
        }
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        compile project(':obd2-common')
        compile 'com.opencsv:opencsv:4.2'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile project(':obd2-common')
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    plugins {
        id 'java'
        id 'idea'
    }
    
    group 'tech.necko.obd2'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    我不知道这是否是一个标准的渐变功能,但它将我的每个模块分为两个子模块:主模块和测试模块。我在intelliJ中检查了项目属性,它反映了构建文件中的内容


    谢谢大家!

    经过多次努力,尝试了许多解决方案,我发现我必须使用IntelliJ的builder重建整个项目:

    您是否在“设置|生成…|生成工具| Gradle |运行程序”中启用了“将IDE生成/运行操作委派给Gradle”选项?