/** * XIT Framework Gradle 빌드 설정 파일 * * 주요 버전 정보: * - Spring Boot: 2.7.18 (스프링 부트 버전) * - Java: 1.8 (소스 및 타겟 호환성) * - 전자정부 프레임워크: 4.3.0 */ plugins { // 스프링 부트 플러그인 - 스프링 부트 애플리케이션 빌드 및 실행을 지원 id 'org.springframework.boot' version '2.7.18' // 스프링 의존성 관리 플러그인 - 스프링 부트 버전에 맞는 의존성 버전 관리 id 'io.spring.dependency-management' version '1.0.15.RELEASE' // 자바 플러그인 - 자바 소스 컴파일 지원 id 'java' // WAR 플러그인 - 웹 애플리케이션 아카이브 생성 지원 id 'war' } // 프로젝트 그룹 및 버전 정보 group = 'go.kr.project' version = '0.0.1-SNAPSHOT' // 자바 버전 설정 (소스 및 타겟 호환성) java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } // Java 컴파일 옵션 설정 //tasks.withType(JavaCompile) { // options.encoding = 'UTF-8' // options.compilerArgs += [ // '-Xlint:deprecation', // '-Xlint:unchecked' // ] //} // 설정 구성 configurations { compileOnly { extendsFrom annotationProcessor } } // 저장소 설정 repositories { mavenCentral() // 메이븐 중앙 저장소 maven { url 'https://maven.egovframe.go.kr/maven/' } // 전자정부 프레임워크 저장소 } // 버전 변수 정의 ext { // 서버 관련 버전 tomcatVersion = '9.0.78' // 톰캣 9 버전 (Servlet 3.1 지원) // 라이브러리 버전 tilesVersion = '3.0.8' // 타일즈 버전 mybatisVersion = '2.3.1' // 마이바티스 스프링 부트 스타터 버전 commonsTextVersion = '1.10.0' // 아파치 커먼스 텍스트 버전 egovFrameVersion = '4.3.0' // 전자정부 프레임워크 버전 } dependencies { // ===== 스프링 부트 핵심 의존성 ===== // 스프링 부트 웹 스타터 - MVC, REST, 내장 톰캣 등 웹 개발에 필요한 기본 의존성 포함 implementation 'org.springframework.boot:spring-boot-starter-web' // 스프링 부트 유효성 검사 스타터 - Bean Validation API 구현체 포함 implementation 'org.springframework.boot:spring-boot-starter-validation' // 스프링 부트 AOP 스타터 - 관점 지향 프로그래밍 지원 implementation 'org.springframework.boot:spring-boot-starter-aop' // 스프링 부트 JDBC 스타터 - JDBC 및 커넥션 풀(HikariCP) 포함 implementation 'org.springframework.boot:spring-boot-starter-jdbc' //implementation 'org.springframework.boot:spring-boot-starter-data-jpa' /* 실제 사용 X, intellij plugin 사용을 위해 설정 */ // ===== 전자정부 프레임워크 의존성 ===== // 전자정부 프레임워크 공통 기능 - 공통 유틸리티 및 예외 처리 등 implementation("org.egovframe.rte:org.egovframe.rte.fdl.cmmn:${egovFrameVersion}") { exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl' /* 보안이슈 대응 후 쿼리로그 문제 발생, SLF4J 충돌 발생 */ } // 전자정부 프레임워크 MVC - 웹 MVC 관련 기능 implementation("org.egovframe.rte:org.egovframe.rte.ptl.mvc:${egovFrameVersion}") { exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl' /* 보안이슈 대응 후 쿼리로그 문제 발생, SLF4J 충돌 발생 */ } // ===== 로깅 의존성 ===== // Logback - 로깅 구현체 implementation 'ch.qos.logback:logback-classic' implementation 'ch.qos.logback:logback-core' // SLF4J - 로깅 퍼사드 인터페이스 implementation 'org.slf4j:slf4j-api' // ===== 서블릿 & JSP 관련 의존성 ===== // JSTL - JSP 표준 태그 라이브러리 implementation 'javax.servlet:jstl' // ===== 톰캣 설정 ===== // 톰캣 9 명시적 설정 (Servlet 3.1 지원) implementation "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}" implementation "org.apache.tomcat.embed:tomcat-embed-el:${tomcatVersion}" implementation "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}" // ===== 타일즈 의존성 ===== // 타일즈 - 레이아웃 템플릿 엔진 (JSP 페이지 조각 조합) implementation "org.apache.tiles:tiles-jsp:${tilesVersion}" implementation "org.apache.tiles:tiles-core:${tilesVersion}" implementation "org.apache.tiles:tiles-api:${tilesVersion}" implementation "org.apache.tiles:tiles-servlet:${tilesVersion}" implementation "org.apache.tiles:tiles-el:${tilesVersion}" // ===== 데이터 액세스 의존성 ===== // MyBatis 스프링 부트 스타터 - SQL 매핑 프레임워크 implementation "org.mybatis.spring.boot:mybatis-spring-boot-starter:${mybatisVersion}" // MariaDB JDBC 드라이버 - MariaDB 데이터베이스 연결 implementation 'org.mariadb.jdbc:mariadb-java-client' // HikariCP - 고성능 JDBC 커넥션 풀 (spring-boot-starter-jdbc에 포함됨) // ===== 유틸리티 의존성 ===== // Apache Commons Text - 텍스트 처리 유틸리티 implementation "org.apache.commons:commons-text:${commonsTextVersion}" // ===== EXCEL ===== implementation 'org.apache.poi:poi:5.3.0' implementation 'org.apache.poi:poi-ooxml:5.3.0' // ===== Swagger UI ===== implementation 'org.springdoc:springdoc-openapi-ui:1.7.0' implementation 'org.springdoc:springdoc-openapi-webmvc-core:1.7.0' // ===== sqlPaser ===== implementation 'com.github.jsqlparser:jsqlparser:4.5' // ===== datasource-proxy ===== // 파라미터 바인딩된 SQL 쿼리 로깅을 위한 datasource-proxy implementation 'net.ttddyy:datasource-proxy:1.10.1' // ===== UBI 리포트 서버 의존성 ===== // UbiServer.jar - UBI 리포트 서버 라이브러리 (컴파일 시에만 필요, WAR에는 WEB-INF/lib에서 자동 포함됨) providedCompile files('src/main/webapp/WEB-INF/lib/UbiServer.jar') implementation 'xerces:xercesImpl:2.12.2' // ===== 개발 도구 의존성 ===== // Lombok - 반복 코드 생성 도구 (Getter, Setter, Builder 등 자동 생성) compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // 스프링 부트 개발 도구 - 자동 재시작, 라이브 리로드 등 developmentOnly 'org.springframework.boot:spring-boot-devtools' // ===== 테스트 의존성 ===== // 스프링 부트 테스트 스타터 - JUnit, Mockito 등 테스트 도구 포함 testImplementation 'org.springframework.boot:spring-boot-starter-test' // ===== 배포 관련 의존성 ===== // 톰캣 서블릿 API - 외부 톰캣 배포 시 사용 providedCompile "org.apache.tomcat:tomcat-servlet-api:${tomcatVersion}" // 스프링 부트 톰캣 - 외부 톰캣 배포 시 내장 톰캣 제외 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' } // ===== 리소스 필터링 설정 ===== // application*.yml 파일에서 @변수명@ 플레이스홀더를 gradle.properties의 값으로 치환 processResources { // application*.yml 파일에서만 @projectName@ 치환 filesMatching('application*.yml') { filter { line -> line.replaceAll('@projectName@', project.property('projectName').toString()) } } } // ===== 테스트 설정 ===== // JUnit 플랫폼을 사용하여 테스트 실행 (JUnit 5 지원) tasks.named('test') { useJUnitPlatform() } // ===== WAR 파일 설정 ===== // 생성될 WAR 파일의 이름 지정 (gradle.properties의 프로젝트명 전역변수 사용) war { archiveFileName = "${projectName}.war" } // ===== bootWar 파일 설정 ===== // 생성될 bootWar 파일의 이름 지정 (gradle.properties의 프로젝트명 전역변수 사용) bootWar { archiveFileName = "${projectName}-BOOT.war" } // war 포함 압축 푼 소스 포함, // ./build/exploded/{프로젝트명}/ tasks.register('exploded', Copy) { dependsOn 'war' from zipTree(tasks.war.archiveFile) into layout.buildDirectory.dir("exploded/${project.name}") doFirst { layout.buildDirectory.dir("exploded/${project.name}").get().asFile.deleteDir() } }