Gradle | build.gradle 기본 | build.gradle 내용 및 플러그인

이전에 Gradle으로 “테스크"라는 것을 지정하고 다양한 작업을 수행했었다. 이러한 Gradle 명령으로 수행하는 처리는 “빌드 파일"라는 파일에 작성된 내용을 바탕으로 실행된다.

build.gradle 내용

그럼, 빌드 파일에 어떤 처리가 적혀있는 것이다. build.gradle 파일의 내용은 아래와 같다.

/*
 * This build file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/4.1/userguide/tutorial_java_projects.html
 */

// Apply the java plugin to add support for Java
apply plugin: 'java'

// Apply the application plugin to add support for building an application
apply plugin: 'application'

// In this section you declare where to find the dependencies of your project
repositories {
    // Use jcenter for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

dependencies {
    // This dependency is found on compile classpath of this component and consumers.
    compile 'com.google.guava:guava:22.0'

    // Use JUnit test framework
    testCompile 'junit:junit:4.12'
}

// Define the main class for the application
mainClassName = 'App'

이 파일 내용을 보면서 빌드 파일의 내용을 확인한다.

build.gradle는 Groovy로 작성되어 있다. Groovy는 Java와 마찬가지로, /// * */으로 주석을 입력할 수 있다. 주석을 제거하면 그다지 어려울 것 같은 처리는 없어 보인다.

java 플러그인 추가

apply plugin: 'java'

처음에 apply plugin:라는 것은 Gradle 플러그인을 사용하기 위한 것이다.

java는 Java 프로그램을 위한 기능을 제공하는 플러그인이다. 앞전에 compileJava이라는 테스크를 사용했는데, 이것은 사실 java 플러그인에서 제공하는 것이다.

application 플러그인 추가

apply plugin: 'application'

또 다른 플러그인이 추가되어 있다. 이 application은 응용 프로그램에 대한 기능을 제공하는 플러그인이다. 앞에서 run 응용 프로그램을 실행했는데, 이것이 application 플러그인에 의해 제공되는 테스크이다.

메인 클래스 이름

mainClassName = 'App'

도중에 조금 넘어와서 마지막에 있는 mainClassName 값을 보자. 이것은 application 플러그인으로 사용되는 것으로, 메인 클래스를 지정한다. run으로 응용 프로그램을 실행할 수 있었던 것도 이 mainClassName 메인 클래스가 지정되어 있었기 때문이다.

java plugin

프로젝트에서 java plugin을 사용하려면 build.gradle 파일에 다음과 같이 설정하면 된다.

apply plugin: 'java'

기본 프로젝트 레이아웃

디렉토리(Directory) 설명
src/main/java 자바 소스 코드를 관리하는 디렉토리.
src/main/resources 리소스을 관리하는 디렉토리.
src/test/java 테스트 자바 소스를 관리하기 위한 디렉토리.
src/test/resources 테스트 리소스를 관리하기 위한 디렉토리.
src/sourceSet/java 자바 소스를 위한 특정한 source set
src/sourceSet/resources 자바 리소스를 위한 특정한 source set

여기서 배포 시 테스트 소스 코드가 같이 배포되지 않는다.