Unable to resolve the dependency of child module, I am building a multi module Gradle Java project using Kotlin DSL. I have two modules under root directory - application, dao
. The application
module needs to use classes defined in dao
module.
I defined the dependency on dao module in build.gradle.kts of application module using
implementation(project(":dao"))
I am defining beans of dao
module using a config class and am trying to import it in application module, but the classes are not resolved in compile time. (SpringBoot application)
Please help me understand why is this dependency not getting resolved? Am I missing anything which is required in adding a module as dependency in another module?
Below are the respective files.
Root build.gradle.kts
buildscript {
repositories {
mavenCentral()
}
}
plugins {
id("java")
id("idea")
id("war")
id("io.spring.dependency-management") version "1.0.9.RELEASE"
}
subprojects {
group = "com.company"
version = "0.0.1"
repositories {
mavenCentral()
}
apply() {
plugin("java")
plugin("idea")
plugin("io.spring.dependency-management")
}
java.sourceCompatibility = org.gradle.api.JavaVersion.VERSION_11
dependencies {
implementation("io.jsonwebtoken:jjwt-api:0.10.7")
implementation("io.jsonwebtoken:jjwt-impl:0.10.7")
implementation("com.auth0:java-jwt:3.10.3")
implementation(group= "org.mockito", name= "mockito-core", version= "3.1.0")
implementation(group= "javax.inject", name= "javax.inject", version= "1")
implementation(group= "org.springframework", name= "spring-context", version= "5.2.6.RELEASE")
implementation(group= "org.springframework.security", name= "spring-security-core", version= "4.2.3.RELEASE")
implementation(group= "org.apache.commons", name= "commons-lang3", version= "3.7")
implementation(group="com.google.guava", name= "guava", version= "29.0-jre")
implementation(group= "commons-io", name= "commons-io", version= "2.7")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.3.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.3.1")
}
}
tasks.getByName<Test>("test") {
useJUnitPlatform()
}
settings.gradle.kts
rootProject.name = "test-project"
include(":dao",":application")
application
module’s build.gradle.kts
buildscript {
repositories {
mavenCentral()
}
}
plugins {
id("org.springframework.boot") version "2.3.0.RELEASE"
}
dependencies {
implementation(project(":dao"))
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-web")
}
val jar by tasks.getting(Jar::class) {
manifest {
attributes["Main-Class"] = "com.company.MainApplication"
}
from(sourceSets.main.get().output)
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
}
task<Exec>("start"){
dependsOn("build")
group = "Execution"
description = "Start the application post running build and using generated jar file."
commandLine("java", "-jar", jar.archiveFile.get())
}
task<Exec>("startFast") {
dependsOn(jar)
group = "Execution"
description = "Start the application using last generated jar file."
commandLine("java", "-jar", jar.archiveFile.get())
}
dao
module’s build.gradle.kts
plugins {
java
}
version = "unspecified"
repositories {
mavenCentral()
}
dependencies {}