i've got multimodule sping-boot gradle project with aims to provide spring-boot starter functionality and contains of modules
library
autoconfiguration
starter
sample-app
settings.gradle.kts looks like
rootProject.name = "app"
include("library")
include("autoconfiguration")
include("starter")
include("sample-app")
...
gradle scripts for modules looking like
library
dependencies {
// logging
implementation(libs.slf4j.api)
implementation(libs.logback.classic)
// test
testImplementation(libs.junit.jupiter.api)
testRuntimeOnly(libs.junit.jupiter.engine)
testImplementation(libs.junit.jupiter.params)
testImplementation(libs.assertj.core)
testImplementation(libs.mockk)
}
autoconfiguration
dependencies {
kapt(libs.spring.boot.configuration.processor)
api(project(":library"))
implementation(libs.spring.boot.autoconfigure)
testImplementation(libs.spring.boot.starter.test)
}
autoconfiguration also has at resources META_INF/spring/Atoconfiguration.imports with content
org.example.app.configuration.MyConfiguration
starter
dependencies {
implementation(project(":autoconfiguration"))
implementation(project(":library"))
}
sample app
dependencies {
implementation(libs.spring.boot.starter)
implementation(project(":starter"))
// test
testImplementation(libs.spring.boot.starter.test)
}
the question is how to wire starter to sample app? i've tried
implementation(project(":starter"))
implementation(project(":autoconfiguration"))
implementation(project(":starter"))
implementation(libs.spring.boot.starter)
implementation(project(":autoconfiguration"))
implementation(project(":starter"))
implementation(project(":library"))
but anyway i'm getting error java.io.FileNotFoundException: class path resource [com/example/app/library/configuration/MyConfiguration.class]
when running test
@SpringBootTest(
classes = [SampleApp::class],
)
class EgtsAdapterSampleAppTest {
@Autowired
lateinit var context: ApplicationContext
@Test
fun `should load application context`() {
assertThat(context).isNotNull
}
}
why Spring is looking for configuration at this path example/app/library/configuration and not at example/app/configurationj as set in META_INF/spring/Atoconfiguration.imports at autoconfiguration package?