Gradle | Web 어플리케이션 개발 | build.gradle 작성

Web 어플리케이션을 위한 build.gradle를 작성한다. 이번에는 일반적인 Java 응용 프로그램과 여러가지가 다른 부분이 있다.

build.gradle

우선 아래에 build.gradle의 전체 소스 코드를 올려 두었다.

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'gretty'
 
buildscript {
    repositories {
        jcenter()
    }
 
    dependencies {
        classpath group:'org.akhikhl.gretty', name:'gretty-plugin', version:'+'
    }
}
 
repositories {
    jcenter()
}
 
dependencies {
    testCompile group:'junit', name:'junit', version:'4.12'
}

우선, 전체 코드를 작성하면 실제로 동작시켜 본다. 다음과 같이 명령을 실행한다.

$ gradle war

이는 Web 응용 프로그램을 war 파일로 생성하기 위한 것이다. 실행하면 프로젝트의 build 폴더에 있는 libs 폴더에 “GradleWebApp.war"라는 War 파일이 생성된다.

이어 응용 프로그램의 동작 체크를 한다. 다음과 같이 실행한다.

$ gradle run

실행되면 Jetty가 다운로드되고, 바로 기동된다. 그러면 아래 주소에 액세스해 본다. 서블릿에 액세스되고 화면이 나타난다.

http://localhost:8080/GradleWebApp/hello

사용 플러그인

그럼, build.gradle에 플러그인 내용을 확인해 보자. 여기에서는 3개의 플러그인이 포함되어 있다.

apply plugin : 'java'
apply plugin : 'war'
apply plugin : 'gretty'

최초의 “java"는 이미 익숙할 것이다. Java 프로그램에 대한 compileJava 등의 테스크를 제공하는 플러그이다.

“war” 플러그인은 이름 그대로 war 파일로 패키징하기 위한 플러그인이다. 이는 Web 응용 프로그램에서 필수 플러그인이라고 할 수 있다. 앞에서 gradle war는 이 플러그인에서 제공하는 것이다.

“gretty"는 Jetty 서블릿 컨테이너를 이용하기 위한 플러그인이다. 이 Gretty는 Groovy에서 Jetty를 이용하기 위한 것으로, 앞에서 실행했던 gradle run으로 Jetty를 시작하고 이 Web 어플리케이션이 기동된 것이다.

buildscript와 dependencies

build.gradle에는 낯선 문장이 추가되어 있다. 그것은 “buildscript"라는 것이다. 이것은 다음과 같은 형태로 되어 있다.

buildscript {
    repositories {
        ...... 저장소 ......
    }

    dependencies {
        ...... 패키지 지정 ......
    }
}

이 buildscript라는 것은 빌드 스크립트를 위한 것이다. 빌드 스크립트라는 것은 그 이름대로 빌드를 위해 실행되는 스크립트이다. Gradle에 있는 기능 그대로 빌드를 할 경우에는 이 buildscript이 필요없다. 이것은 빌드할 때 외부 라이브러리 등을 사용하는 경우에 필요하다.

이번에는 Gretty 플러그인을 사용하고 있지만, 이것은 Gradle 표준이 아니라 외부 라이브러리이다. 따라서 빌드시 어떤 저장소에서 어떤 라이브러리를 사용할 것인지를 지정해야 한다. 그 부분이 buildsript에 있는 repositories과 dependencies이다. 이전에 이미 설명했던 내용이다.

이 buildscript 이 후에 repositories과 dependencies이 있지만, 이것은 빌드 처리 이외의 곳에서 사용되는 것이다. 여기에서는 JUnit이 dependencies에 준비되어 있다.

 

이것으로 Web 어플리케이션의 프로젝트 빌드 및 실행에 대해 대략 알아 보았다.