spring

Spring Boot사용시 Gradle Option구성요소

기기디 2022. 4. 14. 01:27

spring boot사용시 흔히 사용하는 gradle option에 대해서 살펴보고 알아봤다.

정의

  • gradle은 gradle을 위한 전용언어를 사용한다. groovy라는 언어를 기반으로 하는 DSL언어를 사용한다.
    • DSL - Domain - Specific Languages : 도메인고유언어. 특정한 용도에 한정된 언어.

구성요소

build.gradle

  • 빌드작업에 필요한 기본설정, 동작을 정의하고 의존성을 관리해주는 파일
  • plugins
    • 해당 블록 안에 프로젝트 빌드에 필요한 플러그인을 작성하여 지정할 수 있다.
    • 특정 플러그인을 추가하면 gradle task에 빌드 관련하여 수행할 수 있는 작업들이 추가된다. ( ex> java플러그인을 추가하면 compileJava task가 추가된다)
    • build.gradle안에 해당 플러그인에 필요한 설정을 추가할 수 있다.
  • repositories
    • 저장소 정보를 관리하는 블록이다.
    • 라이브러리를 가져올 때 참조할 저장소를 지정할 수 있다.
  • dependencis
    • 의존성을 관리하고 설정하는 블록이다. 필요한 라이브러리의 정보와 버전을 작성하면 해당 라이브러리를 참조할 수 있다.
    • compile - deprecated
      • 선언한 모듈에 변경이 일어나면 해당 모듈을 의존하는 모든 모듈이 recomplie이 일어난다.
    • implementation
      • 선언한 모듈에 변경이 일어나면 해당 모듈에 직접적으로 의존하는 모듈만 recompile이 일어난다.
      • compile과 하는 동작은 동일하지만
        1. 의존하는 모듈의 recopile이 일어나는 범위의 차이가 존재한다.
        2. 사용자에게 api노출을 막을 수 있다.
      • 빌드시스템에서 재컴파일해야하는 프로젝트의 크기가 줄어들기 때문에 빌드시간이 개선될 수 있다.
    • testImplementation
      • 테스트를 컴파일 할때 사용되는 라이브러리를 선언한다.
    • compileOnly
      • 컴파일시에만 빌드하고 빌드 결과물에는 포함하지 않는다.
      • 컴파일타임에만 필요하고 런타임에는 필요하지 않는 라이브러리를 선언한다. (ex> lombok)
    • runtimeOnly
      • 런타임에만 필요하고 컴파일타임에는 필요하지 않는 라이브러리를 선언한다 (ex> logging, db관련 라이브러리)
    • annotationProcessor
      • 컴파일 시점으로 어노테이션을 분석하여 코드를 생성하도록 만든다.
      • Gradle 6.xx부터 "annotationProcessor"을 사용하면 별다른 설정을 하지 않아도 그레이들 자체에서 적절한 AnnotationProcessor를 선택하여 사용한다.
  • ext
    • gradle안에서 사용할 수 있는 전역변수를 선언하는 블록이다.
  • buildscript
    • 외부라이브러리를 build.gradle로 바로 가져와서 사용해야 할 때 사용하는 블록이다.
    • 별도의 외부 라이브러리를 가져와야 할 때 사용한다. dependencies와 repositories가 포함된다.

sesttings.gradle

  • 멀티프로젝트 설정시 사용해야하는 파일.
  • include를 통해서 rootProject가 다른 project를 포함하게 만들어 설정하는것이 가능하다.

출처

https://docs.gradle.org/current/userguide/userguide.html

https://bloowhale.tistory.com/64

https://notpeelbean.tistory.com/entry/gradle-buildscript-dependencies-와-dependencies-의-차이