plugins { id 'java' id 'org.springframework.boot' version '3.4.0' id 'io.spring.dependency-management' version '1.1.6' } group = 'com.ktds.hi' version = '1.0.0' java { sourceCompatibility = '21' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { // 공통 모듈 implementation project(':common') // Spring Boot Starters implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.springframework.boot:spring-boot-starter-actuator' // Database runtimeOnly 'org.postgresql:postgresql' // Redis implementation 'org.springframework.boot:spring-boot-starter-data-redis' // JSON Processing implementation 'com.fasterxml.jackson.core:jackson-databind' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' // Lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // OpenAPI/Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' // Logging implementation 'org.springframework.boot:spring-boot-starter-logging' // Security (JWT 처리용) implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt-api:0.12.3' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.3' // Apache Commons (유틸리티) implementation 'org.apache.commons:commons-lang3:3.13.0' implementation 'org.apache.commons:commons-collections4:4.4' // AI 서비스 연동을 위한 HTTP 클라이언트 implementation 'org.springframework.boot:spring-boot-starter-webflux' // 캐싱 implementation 'org.springframework.boot:spring-boot-starter-cache' implementation 'com.github.ben-manes.caffeine:caffeine' // 모니터링 implementation 'io.micrometer:micrometer-registry-prometheus' // 테스트 testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' testImplementation 'org.testcontainers:junit-jupiter' testImplementation 'org.testcontainers:postgresql' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } dependencyManagement { imports { mavenBom "org.testcontainers:testcontainers-bom:1.19.3" } } tasks.named('test') { useJUnitPlatform() // 테스트 환경 설정 systemProperty 'spring.profiles.active', 'test' // 테스트 시 메모리 설정 minHeapSize = "512m" maxHeapSize = "1024m" } // JAR 파일 이름 설정 jar { archiveBaseName = 'recommend-service' archiveVersion = '1.0.0' enabled = false } bootJar { archiveBaseName = 'recommend-service' archiveVersion = '1.0.0' archiveClassifier = '' } // 컴파일 옵션 compileJava { options.encoding = 'UTF-8' options.compilerArgs += ['-parameters'] } compileTestJava { options.encoding = 'UTF-8' } // 리소스 인코딩 processResources { filesMatching('**/*.properties') { filteringCharset = 'UTF-8' } filesMatching('**/*.yml') { filteringCharset = 'UTF-8' } }