You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
8.0 KiB
Groovy
200 lines
8.0 KiB
Groovy
/**
|
|
* 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}"
|
|
// Apache HttpClient 4 - RestTemplate 연결 풀 관리
|
|
implementation 'org.apache.httpcomponents:httpclient'
|
|
// Guava - Rate Limiting 기능을 위한 RateLimiter
|
|
implementation 'com.google.guava:guava:32.1.3-jre'
|
|
|
|
// ===== 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'
|
|
|
|
// ===== 개발 도구 의존성 =====
|
|
// 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()
|
|
}
|
|
}
|