Gradle은 Groovy를 기반으로 한 오픈소스 빌드 도구이다. Ant의 자유도와 Maven의 관례를 통한 접근성을 바탕으로 이전 빌드툴의 단점을 보완하여 개선된 서비스를 제공한다.
Ant, Maven과 같은 기존의 빌드툴은 xml형식을 이용하여 정적인 설정정보를 구성했다.
Gradle은 Groovy라는 언어를 이용하여 코드로서 설정정보를 구성하기 때문에 구조적인 장점이 있다.
Build 3단계 Gradle Build Lifecycle
build.gradle 파일에 빌드정보를 정의하여 프로젝트에서 사용하는 환경 설정, 빌드방법, 라이브러리 정보 등을 기술함으로서 빌드 및 프로젝트의 관리환경을 구성한다.
plugin은 미리 구성해 놓은 task들의 그룹이며, 특정 빌드과정에 필요한 기본정보를 포함하고, 필요에 따라 정보를 수정하여 목적에 맞게 사용할 수 있다.
plugins { id 'java' id 'war' } // JDK version source compatibility sourceCompatibility = 1.8 // project version version = '1.0' // War file name war.baseName = 'sample' // Web directory, this overrides the default value "webapp" project.webAppDirName = 'src/main/webapp' project.buildDir = 'target'
Gradle은 Maven repository, JCenter repository, Ivy directory 등 다양한 저장소를 지원한다. Gradle repository
repositories { mavenLocal() // maven 로컬 캐시 저장소 mavenCentral() // maven 중앙 저장소 maven { url 'https://maven.egovframe.go.kr/maven' } // maven 원격 저장소 }
Gradle은 java의 의존성 관리를 위해 다양한 '구성'을 제공하고 있다. Gradle Dependency manaement
의존관계는 group, name, version 순으로 의존성을 기술하며 콜론 (':')으로 구분한다.
dependencies { implementation('org.egovframe.rte:org.egovframe.rte.ptl.mvc:4.2.0') { exclude(module: 'commons-logging') } implementation 'org.egovframe.rte:org.egovframe.rte.psl.dataaccess:4.2.0' implementation 'org.egovframe.rte:org.egovframe.rte.fdl.idgnr:4.2.0' implementation 'org.egovframe.rte:org.egovframe.rte.fdl.property:4.2.0' implementation 'javax.servlet.jsp.jstl:jstl-api:1.2' implementation 'org.apache.taglibs:taglibs-standard-impl:1.2.5' implementation 'org.antlr:antlr:3.5' implementation 'org.hsqldb:hsqldb:2.7.2' providedCompile 'javax.servlet:javax.servlet-api:4.0.1' }
Eclipse에서 제공하는 Buildship 플러그인 개발도구를 이용한다.