목차

개인 빌드 (Gradle)

설명

Gradle은 Groovy를 기반으로 한 오픈소스 빌드 도구이다. Ant의 자유도와 Maven의 관례를 통한 접근성을 바탕으로 이전 빌드툴의 단점을 보완하여 개선된 서비스를 제공한다.

특징

장점

Ant, Maven과 같은 기존의 빌드툴은 xml형식을 이용하여 정적인 설정정보를 구성했다.
Gradle은 Groovy라는 언어를 이용하여 코드로서 설정정보를 구성하기 때문에 구조적인 장점이 있다.

기본구조

Build Lifecycle

Build 3단계 Gradle Build Lifecycle

  1. 초기화(Initialization) : 빌드 대상 프로젝트를 결정하고 각각에 대한 Project 객체를 생성.
    settings.gradle 파일에서 프로젝트 구성 (멀티프로젝트, 싱글프로젝트 구분)
  2. 구성(Configuration) : 빌드 대상이 되는 모든 프로젝트의 빌드 스크립트를 실행. (프로젝트 객체 구성)
    configured Task 실행
  3. 실행(Execution) : 구성 단계에서 생성하고 설정된 프로젝트의 태스크 중에 실행 대상 결정.
    gradle 명령행에서 지정한 태스크 이름 인자와 현재 디렉토리를 기반으로 태스크를 결정하여 선택된 Task들을 실행

Build 설정파일

폴더구조

사용법

build.gradle 파일에 빌드정보를 정의하여 프로젝트에서 사용하는 환경 설정, 빌드방법, 라이브러리 정보 등을 기술함으로서 빌드 및 프로젝트의 관리환경을 구성한다.

plugin 설정

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 플러그인 개발도구를 이용한다.

Gradle 전환

참고자료

http://gradle.org/