plugins { id 'java' id 'org.springframework.boot' version '4.0.5' id 'io.spring.dependency-management' version '1.1.6' } group = 'io.shinhanlife' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '21' } def springBootVersion = '4.0.5' def lombokVersion = '1.18.32' def mapstructVersion = '1.5.5.Final' bootRun { if (project.hasProperty('mainClass')) { mainClass = project.property('mainClass') } systemProperty "file.encoding", "UTF-8" systemProperty "console.encoding", "UTF-8" } // 개발 편의를 위한 Tool Group 전용 실행 태스크 (IntelliJ 우측 Gradle 패널에서 더블클릭으로 바로 실행 가능) task bootRunToolGroup1(type: org.springframework.boot.gradle.tasks.run.BootRun) { group = "application" description = "Run Tool Server for group_1 (Port: 8082)" mainClass = 'io.shinhanlife.AxHubToolApplication' args = ['--mcp.tool.target=group_1', '--server.port=8082'] } task bootRunToolGroup2(type: org.springframework.boot.gradle.tasks.run.BootRun) { group = "application" description = "Run Tool Server for group_2 (Port: 8083)" mainClass = 'io.shinhanlife.AxHubToolApplication' args = ['--mcp.tool.target=group_2', '--server.port=8083'] } springBoot { mainClass = 'io.shinhanlife.AxHubAdminApplication' } repositories { mavenCentral() } dependencies { implementation "org.springframework.boot:spring-boot-starter-web:${springBootVersion}" implementation 'org.springframework.boot:spring-boot-starter-data-redis' // Resilience4j implementation 'io.github.resilience4j:resilience4j-spring-boot3:2.2.0' implementation 'io.github.resilience4j:resilience4j-core:2.2.0' implementation 'io.github.resilience4j:resilience4j-circuitbreaker:2.2.0' implementation 'io.github.resilience4j:resilience4j-ratelimiter' implementation 'io.github.resilience4j:resilience4j-retry:2.2.0' // AOP (needed by Resilience4j) implementation 'org.springframework.boot:spring-boot-starter-aop:3.3.0' // MyBatis & DB implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3' runtimeOnly 'com.h2database:h2' implementation 'p6spy:p6spy:3.9.1' // Redis explicit driver implementation 'io.lettuce:lettuce-core:6.6.0.RELEASE' // MapStruct implementation "org.mapstruct:mapstruct:${mapstructVersion}" // Lombok compileOnly "org.projectlombok:lombok:${lombokVersion}" annotationProcessor "org.projectlombok:lombok:${lombokVersion}" // lombok-mapstruct-binding is usually needed if mapstruct is processed after lombok annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}" // MCP required dependencies implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.17.1' implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.1' implementation 'com.networknt:json-schema-validator:1.4.0' implementation 'org.springframework.kafka:spring-kafka:3.2.0' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0' // Test testImplementation "org.springframework.boot:spring-boot-starter-test:${springBootVersion}" } tasks.withType(JavaCompile) { options.compilerArgs << '-parameters' options.compilerArgs << '-Amapstruct.defaultComponentModel=spring' }