Intellij和渐变依赖性问题



今天我遇到了一个真正的问题,我使用Intellij、Java 8和Gradle从头开始的一个小项目。我是Gradle的新手,学到了很多东西,但我目前被一个看似简单的问题所阻碍:

我把我的项目分成了几个模块,比如有一个主模块,里面有几个,比如:

项目概述

它使用gradle clean build:构建正常

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构建时,它失败了。

以下是不同的建筑。gradle:

  1. 主模块("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'
}
  1. obd2轮询

build.gradle:

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'
}
}
  1. obd2模拟器:

build.gradle:

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'
}
  1. 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'
compile project(':obd2-common')
}
  1. obd2 net

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'
}
  1. obd2公共

build.gradle:

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

我不知道这是否是一个标准的渐变功能,但它将我的每个模块分为两个子模块:main和test。我在intelliJ中检查了项目属性,它反映了构建文件中的内容。。。

谢谢!

在经历了很多困难,尝试了很多解决方案后,我发现我必须使用IntelliJ的构建器重建整个项目

内置IntelliJ

最新更新