plugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.zioinfo.kintex' version = '0.1.0-SNAPSHOT' java { sourceCompatibility = JavaLanguageVersion.of(17) targetCompatibility = JavaLanguageVersion.of(17) } // 한글 문자열 리터럴 손상 방지 — Windows javac 기본 인코딩(CP949) 대신 UTF-8 강제. tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' } repositories { mavenCentral() } ext { mybatisStarterVersion = '3.0.3' // Spring Boot 3.2.x 호환 jjwtVersion = '0.12.5' } dependencies { // --- Web / REST + WebSocket(STOMP) 실시간 알림(RenderJob 완료·승인 이벤트) --- implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-security' // --- MyBatis + PostgreSQL(PostGIS) — 공간 SQL은 매퍼 XML(kintex-db-engineer 공유) --- implementation "org.mybatis.spring.boot:mybatis-spring-boot-starter:${mybatisStarterVersion}" runtimeOnly 'org.postgresql:postgresql' // --- Flyway 마이그레이션(순번 DDL·시드 권위) — Spring Boot 3.2.x 관리 버전(Flyway 9.x, PG 내장) --- implementation 'org.flywaydb:flyway-core' // --- Redis 작업 큐 (RenderJob·서류 생성·알림 발행) --- implementation 'org.springframework.boot:spring-boot-starter-data-redis' // --- JWT (행사 단위 RBAC 인증) --- implementation "io.jsonwebtoken:jjwt-api:${jjwtVersion}" runtimeOnly "io.jsonwebtoken:jjwt-impl:${jjwtVersion}" runtimeOnly "io.jsonwebtoken:jjwt-jackson:${jjwtVersion}" // --- 2차 인증 TOTP(RFC6238) — WISE/UIWS 이식 (dev.samstevens.totp) --- implementation 'dev.samstevens.totp:totp:1.7.1' // --- AOP (@Audited 감사 어드바이스, Phase B B-2/B-4) --- implementation 'org.springframework.boot:spring-boot-starter-aop' // --- Lombok --- compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // --- Test --- testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' } tasks.named('test') { useJUnitPlatform() }