itsm_ysm/common/build.gradle
itms-merge-dev 5006ba6ad9 refactor(itms): common 모듈 추출 — 중복 클래스 단일화 (INTEGRATION_DESIGN §3-2)
behavior-identical 확인된 4개 플레인 클래스를 com.urpsys.common 으로 단일화하고
5개 모듈이 implementation project(':common') 으로 참조하도록 전환.

추출(사본 대조 후 동작 등가 확정):
- crypto/Aes256Cipher     (5벌→1): 암호로직 전 사본 동일. front 키스토어 상이(UrpSysKeyMng)
                                    → 생성자 파라미터화(무인자=UrpSystem 기본, front EncryptConfig 만 명시).
                                    미사용 dead 변수(activeProfile) 제거로 CommonUtil 의존 인라인.
- exception/CustomException (5벌→1): 전 사본 로직 동일(주석·brace 스타일 차이만).
- util/ConvertUtils        (api·front→1): 동일. batch 는 LinkedHashMap 분기(기능 상이) → batch 로컬 유지.
- util/DataSourceUtil      (api·auth·batch·datatrans→1): 로직 동일(미사용 import 차이만).

모듈 잔류(특화·안전상 미추출, 사유 기록):
- config/EncryptConfig·PasswordEncoderConfig(@Configuration): 모듈별 @ComponentScan 이
  자기 패키지 한정(api·auth·datatrans·front) → common 이관 시 빈 미등록. EncryptConfig 는
  front 키스토어 특화도 겸함. 각 모듈 로컬 유지하되 common Aes256Cipher 참조로 전환.
- CommonUtil·RestApiCallUtil·HtmlEmailUtil: 사본 간 실기능 분기 大(73~293라인) → 강제 초집합 시
  동작 변경 위험 → 모듈 로컬 유지.

빌드: common·auth·api·batch·datatrans·front compileJava 전부 SUCCESS(--rerun-tasks).
인코딩: 소스 UTF-8, 루트 subprojects JavaCompile encoding=UTF-8 명시(플랫폼 CP949 회귀 방지).
Bean 이름(aes256Cipher)·프로파일·포트 불변. 시크릿 미기재.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 17:42:45 +09:00

38 lines
1.7 KiB
Groovy

// ITMS 통합 common 모듈 (INTEGRATION_DESIGN.md §2, §3-2)
// 5개 모듈에 복붙 포크되어 있던 공통 클래스(behavior-identical 확인분)를 단일화.
// 플레인 Java 라이브러리 — Boot 애플리케이션 아님(bootJar/bootWar 미생성).
plugins {
id 'io.spring.dependency-management'
id 'java'
}
group = 'com.urpsys'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '11' // 소비 모듈(11/16) 최저 호환. JDK17 컴파일러로 빌드.
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
dependencyManagement {
imports {
mavenBom "org.springframework.boot:spring-boot-dependencies:2.6.2"
}
}
// repositories: 루트 build.gradle subprojects 로 승격
dependencies {
implementation 'org.springframework.boot:spring-boot-starter' // spring-core / spring-context (ClassPathResource, @Configuration/@Bean)
implementation 'org.springframework.boot:spring-boot-starter-json' // jackson-databind (ConvertUtils)
implementation 'org.springframework.boot:spring-boot-starter-jdbc' // spring-jdbc + HikariCP (DataSourceUtil)
implementation 'org.springframework.security:spring-security-crypto' // PasswordEncoder / BCrypt (PasswordEncoderConfig)
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2' // SqlSessionFactoryBean (DataSourceUtil)
implementation 'commons-codec:commons-codec:1.15' // Aes256Cipher / EncryptConfig
implementation 'com.konghq:unirest-java:3.7.02' // kong.unirest.json (ConvertUtils)
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
}