Reputation: 8837
I have a multimodule project with gradle that is working fine for a while now. Now I started to refactor my old java code and used some kotlin classes for it. Unfortunately I have a dependency resolving problem with this approach.
So I assured that a dependency :domain
is properly resolved with gradle. It does work with all source files in src/main/java
if they are .java files. However when using it in src/main/kotlin
they do not resolve. This is true only for project module dependencies. External libraries do work in both folder structures. Placing my .kt files into src/main/java
is not working either.
So this is the failing module's gradle.build.kts
file:
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")
}
And this is the build.gradle.kts
of the :domain
module:
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")
}
I have no idea why it is not working. May it be that this jaxb
generator plugin stuff might cause some issues here? Just a guess.
EDIT: root gradle.build.kts
: https://pastebin.com/nNTx1fKe
Upvotes: 0
Views: 1651
Reputation: 33392
Make sure to apply Kotlin JVM plugin to the :domain
module. Note that kotlin("jvm") version "1.3.61"
in your root gradle.build.kts
does not apply it to subprojects! You should have something like:
subprojects {
apply<KotlinPlatformJvmPlugin>()
tasks {
withType<KotlinCompile> {
kotlinOptions.jvmTarget = "11"
}
}
}
Upvotes: 1