У меня есть многомодульный проект с Gradle, который сейчас работает нормально. Теперь я начал проводить рефакторинг своего старого java кода и использовал для него некоторые kotlin классы. К сожалению, у меня есть проблема разрешения зависимостей с этим подходом.
Поэтому я заверил, что зависимость :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")
}
И это build.gradle.kts
из :domain
модуль:
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
генератор плагин может вызвать некоторые проблемы здесь? Просто предположение.
РЕДАКТИРОВАТЬ : root gradle.build.kts
: https://pastebin.com/nNTx1fKe