천복만복 프로그래밍/Gradle

Understanding Gradle #02 – The Build Files

U&MeBlue 2023. 2. 5. 14:59

빌드 파일들은 gradle 를 통한 빌드에서 가장 핵심적인 구성요소들을 담고 있는 파일이다. build.gradle (또는 코틀린 사용시 build.gradle.kts) 파일이 빌드 파일이다.

최초에 프로젝트를 3가지 서브 프로젝트(app, data-model, business-logic)로 구성했다. 그러나 아직 각 서브 프로젝트들은 비어있는 상태이다. 각 서브 프로젝트에 빌드 파일을 추가하여 서브 프로젝트들을 의미있게 만들어 줄 수 있다.

서브 프로젝트의 빌드 파일에서 구성해야할 것들은 3가지 이다.

Give meaning to a subproject - apply a plugin

첫번째는 plugins 블록에 설정하는 plugin 들이다. plugin 을 적용함으로써 서브 프로젝트에 구조와 의미를 부여할 수 있다. 이 구조와 의미를 통해서 gradle 은 서브 프로젝트를 어떻게 빌드해야 하는지를 알 수 있다. 예를 들어 gradle 과 함께 delivered 된 'java-library' 플러그인을 적용함으로써 이 서브 프로젝트를 자바 라이브러리 프로젝트로 만든다. 이렇게해서 gradle 과 IDE 가 어디에 소스코드가 있고, 어떻게 컴파일하고, 어떻게 jar file 로 패키징할 지를 알 수 있다.

plugins {
    id("java-library")
}

두번째로 때로는 Java 를 컴파일 함에 있어서 디테일한 설정을 추가하고 싶은 경우가 있다. 이런 종류의 설정을 하기 위해서 플러그인은 extension 을 제공한다. 'java-library' 플러그인의 경우에는 java extensions 를 활용할 수 있다.

plugins {
    id("java-library")
}

java {
    toolchain.languageVersion.set(JavaLanguageVersion.of(11))
}

세번째로 빌드 파일에 추가할 것은 서브 프로젝트에서 사용할 의존성 명시이다. 의존성은 다른 서브 프로젝트일 수도 있고, 바이너리 저장소에서 다운로드한 의존성 라이브러리일 수도 있다.

dependencies {
    implementation(project(":data-model"))  // 다른 서브프로젝트를 포함하기
    implementation("org.apache.commons:commons-lang3:3.9") // 바이너리 저장소에서 다운로드하기.
                                                           //콜론으로 구분된 groupId, artifactId, version 순으로 명시한다.
}
728x90