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>
128 lines
4.0 KiB
Groovy
128 lines
4.0 KiB
Groovy
plugins
|
|
{
|
|
id 'org.springframework.boot'
|
|
id 'io.spring.dependency-management'
|
|
id 'org.asciidoctor.convert'
|
|
id 'java'
|
|
id 'war'
|
|
}
|
|
|
|
group = 'com.urpsys'
|
|
version = '1.0.0-SNAPSHOT'
|
|
sourceCompatibility = '16'
|
|
|
|
configurations
|
|
{
|
|
compileOnly
|
|
{
|
|
extendsFrom annotationProcessor
|
|
}
|
|
// 스프링 로그 처리하지 않음(타 lib 충동처리가 심함)
|
|
all {
|
|
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
|
|
}
|
|
}
|
|
|
|
// repositories: 루트 build.gradle subprojects 로 승격 (INTEGRATION_DESIGN §2)
|
|
|
|
ext
|
|
{
|
|
set('snippetsDir', file("build/generated-snippets"))
|
|
}
|
|
|
|
dependencies
|
|
{
|
|
implementation project(':common')
|
|
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-batch'
|
|
implementation 'org.springframework.boot:spring-boot-starter-cache'
|
|
implementation 'org.springframework.boot:spring-boot-starter-integration'
|
|
implementation 'org.springframework.boot:spring-boot-starter-mail'
|
|
implementation 'org.springframework.boot:spring-boot-starter-quartz'
|
|
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
|
|
|
implementation ('org.springframework.boot:spring-boot-starter-web')
|
|
{
|
|
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
|
|
}
|
|
|
|
implementation 'org.apache.tiles:tiles-jsp:3.0.7' // tiles 적용
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-undertow'
|
|
implementation 'org.springframework.boot:spring-boot-starter-webflux'
|
|
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
|
|
|
|
implementation 'javax.servlet:jstl' // JSP 설정
|
|
|
|
compileOnly 'org.projectlombok:lombok:1.18.20'
|
|
annotationProcessor 'org.projectlombok:lombok:1.18.20'
|
|
testCompileOnly 'org.projectlombok:lombok:1.18.20'
|
|
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
|
|
|
|
developmentOnly 'org.springframework.boot:spring-boot-devtools'
|
|
|
|
implementation 'commons-codec:commons-codec:1.15' // 암호화처리
|
|
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' // sql log 처리
|
|
implementation 'com.konghq:unirest-java:3.7.02' // http 통신을 쉽게 하기 위함
|
|
|
|
// 사용하지 않음
|
|
// implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
|
|
|
|
// 보안관련 추가사항
|
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
|
|
|
implementation 'org.springmodules:spring-modules-validation:0.9'
|
|
|
|
implementation 'org.antlr:antlr:3.5' // validator 처리
|
|
|
|
|
|
// egov mvc 관련 lib
|
|
implementation('org.egovframe.rte:org.egovframe.rte.ptl.mvc:4.0.0')
|
|
{
|
|
exclude group: 'org.egovframe.rte', module: 'org.egovframe.rte.fdl.logging'
|
|
exclude group: 'org.egovframe.rte', module: 'spring-modules-validation'
|
|
}
|
|
|
|
implementation('org.egovframe.rte:org.egovframe.rte.fdl.property:4.0.0')
|
|
|
|
// 보안관련 추가사항
|
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
|
|
|
// email 관련 추가
|
|
implementation 'org.apache.commons:commons-email:1.5'
|
|
|
|
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
|
|
|
|
|
|
// apache poi lib
|
|
// implementation 'org.apache.poi:poi-ooxml:5.3.0'
|
|
|
|
// apache poi lib
|
|
implementation 'org.apache.poi:poi:4.1.2'
|
|
implementation 'org.apache.poi:poi-ooxml:4.1.2'
|
|
implementation 'org.apache.poi:poi-scratchpad:4.1.2'
|
|
implementation 'org.apache.poi:poi-examples:4.1.2'
|
|
|
|
// 2026.04.02 나혁제 구글 OTP 기능 추가
|
|
implementation 'com.warrenstrange:googleauth:1.5.0'
|
|
|
|
// 2026.04.02 나혁제 구글 OTP 기능 추가
|
|
implementation 'com.google.zxing:core:3.5.1'
|
|
implementation 'com.google.zxing:javase:3.5.1'
|
|
implementation 'de.taimos:totp:1.0'
|
|
}
|
|
|
|
test
|
|
{
|
|
outputs.dir snippetsDir
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
asciidoctor
|
|
{
|
|
inputs.dir snippetsDir
|
|
dependsOn test
|
|
}
|
|
|