plugins { id 'java' id 'org.springframework.boot' version '4.0.5' apply false id 'io.spring.dependency-management' version '1.1.6' apply false } allprojects { group = 'io.shinhanlife' version = '0.0.1-SNAPSHOT' } subprojects { apply plugin: 'java' apply plugin: 'io.spring.dependency-management' java { sourceCompatibility = '21' } repositories { mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } } dependencyManagement { imports { mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES mavenBom "org.springframework.ai:spring-ai-bom:2.0.0" } } dependencies { compileOnly 'org.projectlombok:lombok:1.18.32' annotationProcessor 'org.projectlombok:lombok:1.18.32' annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0' implementation 'org.mapstruct:mapstruct:1.5.5.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.withType(JavaCompile) { options.compilerArgs << '-parameters' options.compilerArgs << '-Amapstruct.defaultComponentModel=spring' } tasks.withType(Test) { useJUnitPlatform() } } def toolCoreProject = project(':dap-was-lib') tasks.register('validateMcpToolNames', JavaExec) { group = 'verification' description = 'Checks duplicate @McpFunction names across all Tool modules before packaging.' dependsOn toolCoreProject.tasks.named('classes') classpath = toolCoreProject.sourceSets.main.runtimeClasspath mainClass.set('io.shinhanlife.dap.lib.validation.McpToolNameValidationRunner') args rootProject.projectDir.absolutePath } subprojects { tasks.matching { it.name == 'bootJar' }.configureEach { dependsOn rootProject.tasks.named('validateMcpToolNames') } }