Kotlin源文件在“中”;src/main/kotlin“的;can';无法解析其他gradle模块类
我有一个与gradle合作的多模块项目,该项目目前运行良好。 现在我开始重构我的旧java代码,并使用了一些kotlin类。 不幸的是,我用这种方法解决了一个依赖性问题 所以我保证依赖项Kotlin源文件在“中”;src/main/kotlin“的;can';无法解析其他gradle模块类,gradle,kotlin,Gradle,Kotlin,我有一个与gradle合作的多模块项目,该项目目前运行良好。 现在我开始重构我的旧java代码,并使用了一些kotlin类。 不幸的是,我用这种方法解决了一个依赖性问题 所以我保证依赖项:domain可以用gradle正确地解决。它可以处理src/main/java中的所有源文件(如果它们是.java文件)。但是,在src/main/kotlin中使用它时,它们不会解析。这仅适用于项目模块依赖项。外部库在这两种文件夹结构中都可以工作。将我的.kt文件放入src/main/java也不起作用 这就
:domain
可以用gradle正确地解决。它可以处理src/main/java
中的所有源文件(如果它们是.java文件)。但是,在src/main/kotlin
中使用它时,它们不会解析。这仅适用于项目模块依赖项。外部库在这两种文件夹结构中都可以工作。将我的.kt文件放入src/main/java
也不起作用
这就是失败模块的gradle.build.kts
文件:
group = "com.my.company"
plugins {
kotlin("jvm")
}
tasks.compileKotlin {
kotlinOptions {
jvmTarget = "11"
}
}
tasks.compileTestKotlin {
kotlinOptions {
jvmTarget = "11"
}
}
dependencies {
implementation(kotlin("stdlib"))
implementation(project(":domain"))
implementation("org.json:json")
implementation("commons-io:commons-io")
}
这是:domain
模块的build.gradle.kts
:
plugins {
id("org.openrepose.gradle.plugins.jaxb") version "2.5.0"
}
group = "com.my.company"
tasks.checkstyleMain {
exclude("**/gen/**")
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-batch")
implementation("org.hsqldb:hsqldb")
implementation("org.springframework:spring-oxm")
implementation("org.apache.commons:commons-lang3")
implementation("org.json:json")
implementation("org.springframework.boot:spring-boot-starter-json")
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
implementation("org.springframework.boot:spring-boot-starter-amqp")
implementation("org.springframework.boot:spring-boot-starter-batch")
implementation("com.fasterxml.jackson.core:jackson-databind")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
implementation("javax.annotation:javax.annotation-api")
implementation("org.apache.commons:commons-text")
implementation("commons-io:commons-io")
implementation("org.springframework.cloud:spring-cloud-gcp-starter-logging")
implementation("org.springframework.cloud:spring-cloud-gcp-starter-trace")
implementation("javax.activation:activation")
implementation("javax.xml.bind:jaxb-api")
implementation("com.sun.xml.bind:jaxb-impl")
implementation("org.springframework.cloud:spring-cloud-stream")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.amqp:spring-rabbit-test")
testImplementation("org.springframework.amqp:spring-rabbit-junit")
jaxb("com.sun.xml.bind:jaxb-xjc")
jaxb("com.sun.xml.bind:jaxb-impl")
jaxb("javax.xml.bind:jaxb-api")
jaxb("javax.activation:activation")
}
sourceSets {
main {
java {
srcDirs("src/gen/java")
}
}
}
jaxb {
bindingsDir = "src/main/resources/bindings"
bindings = listOf("bindings.xjb")
xsdDir = "src/main/resources/xsd"
xjc {
accessExternalSchema = "file"
generateEpisodeFiles = false
destinationDir = "src/gen/java"
}
}
tasks.clean {
delete("src/gen")
}
tasks.compileJava {
dependsOn("xjc")
}
我不知道它为什么不起作用。可能是这个jaxb
generator插件的东西可能会引起一些问题吗?只是猜测而已
编辑:root
gradle.build.kts
:确保将Kotlin JVM插件应用于:域
模块。请注意,根目录中的gradle.build.kts
中的kotlin(“jvm”)版本“1.3.61”
不会将其应用于子项目!您应该有如下内容:
subprojects {
apply<KotlinPlatformJvmPlugin>()
tasks {
withType<KotlinCompile> {
kotlinOptions.jvmTarget = "11"
}
}
}
子项目{
应用()
任务{
withType{
kotlinOptions.jvmTarget=“11”
}
}
}
您可以发布根项目的build.gradle吗。kts@kaushik在问题中添加了tasks.withType().configureEach{kotlinOptions{jvmTarget=“11”}
我认为这是编译kotlin的正确方法。试着用这个代替任务。compileKotlin@kaushik“正确”的格式是什么意思?我需要在哪里使用这个?他在提到的子项目中使用了plugins{kotlin(“jvm”)}
,其他项目也使用Java,我想我看不到。我发现它只适用于根项目。