Intellij 无法解析具有多个 SourceSet 的 Gradle 项目中的符号
Intellij can not resolve Symbol in Gradle Project with multiple SourceSets
我正在开发一个 Gradle 项目,该项目使用多个 Sourcesets 来构建不同的 WAR。
命令行一切正常。 Gradle 正确构建 WAR。但是在 IntelliJ 中,它表示对于 src/k 下的每个 *.java 文件,它无法解析来自 src/main.
的依赖项
我试图通过使用 idea-gradle 插件将目录添加为 SourceDirs 来修复它,但不幸的是,这没有用。
plugins {
id 'org.gretty' version '2.2.0'
id 'war'
id 'idea'
}
configurations {
kCompile.extendsFrom compile
kRuntime.extendsFrom runtime
}
sourceSets {
main {}
k {
java {
compileClasspath += main.output
runtimeClasspath += main.output
srcDirs = ['src/main/java', 'src/k/java/']
}
resources {
compileClasspath += main.output
runtimeClasspath += main.output
srcDirs = ['src/main/resources', 'src/k/resources']
}
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
}
idea {
module {
sourceDirs += file('src/main/java')
sourceDirs += file('src/k/java')
downloadJavadoc = true
downloadSources = false
}
}
repositories {
mavenCentral()
jcenter()
}
gretty {
servletContainer = 'tomcat85'
}
dependencies {
...
}
task kWar(type: War) {
appendix = "k"
from sourceSets.k.output
}
farm {
webapp "build/libs/App-k.war", contextPath: '/k'
}
project.afterEvaluate {
farmRunWar.dependsOn kWar
farmRunWar.shouldRunAfter kWar
}
试试这个:
k {
java {
srcDirs = ['src/main/java', 'src/k/java']
}
resources {
srcDirs = ['src/main/resources', 'src/k/resources']
}
compileClasspath += main.output
runtimeClasspath += main.output
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
另一种变体
k {
java {
srcDirs 'src/main/java'
srcDirs 'src/k/java'
}
resources {
srcDirs 'src/main/resources'
srcDirs 'src/k/resources'
}
compileClasspath += main.output
runtimeClasspath += main.output
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
我找到了一个修复程序,我必须通过文件 > 项目结构 > App_k > + > 模块依赖项 > App_main > ok 手动将 main 的依赖项添加到 Intellij 中的 k。
有没有办法告诉 Intellij 使用 gradle-插件的想法来做到这一点?
我正在开发一个 Gradle 项目,该项目使用多个 Sourcesets 来构建不同的 WAR。
命令行一切正常。 Gradle 正确构建 WAR。但是在 IntelliJ 中,它表示对于 src/k 下的每个 *.java 文件,它无法解析来自 src/main.
的依赖项我试图通过使用 idea-gradle 插件将目录添加为 SourceDirs 来修复它,但不幸的是,这没有用。
plugins {
id 'org.gretty' version '2.2.0'
id 'war'
id 'idea'
}
configurations {
kCompile.extendsFrom compile
kRuntime.extendsFrom runtime
}
sourceSets {
main {}
k {
java {
compileClasspath += main.output
runtimeClasspath += main.output
srcDirs = ['src/main/java', 'src/k/java/']
}
resources {
compileClasspath += main.output
runtimeClasspath += main.output
srcDirs = ['src/main/resources', 'src/k/resources']
}
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
}
idea {
module {
sourceDirs += file('src/main/java')
sourceDirs += file('src/k/java')
downloadJavadoc = true
downloadSources = false
}
}
repositories {
mavenCentral()
jcenter()
}
gretty {
servletContainer = 'tomcat85'
}
dependencies {
...
}
task kWar(type: War) {
appendix = "k"
from sourceSets.k.output
}
farm {
webapp "build/libs/App-k.war", contextPath: '/k'
}
project.afterEvaluate {
farmRunWar.dependsOn kWar
farmRunWar.shouldRunAfter kWar
}
试试这个:
k {
java {
srcDirs = ['src/main/java', 'src/k/java']
}
resources {
srcDirs = ['src/main/resources', 'src/k/resources']
}
compileClasspath += main.output
runtimeClasspath += main.output
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
另一种变体
k {
java {
srcDirs 'src/main/java'
srcDirs 'src/k/java'
}
resources {
srcDirs 'src/main/resources'
srcDirs 'src/k/resources'
}
compileClasspath += main.output
runtimeClasspath += main.output
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
我找到了一个修复程序,我必须通过文件 > 项目结构 > App_k > + > 模块依赖项 > App_main > ok 手动将 main 的依赖项添加到 Intellij 中的 k。 有没有办法告诉 Intellij 使用 gradle-插件的想法来做到这一点?