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과 하는 동작은 동일하지만
- 의존하는 모듈의 recopile이 일어나는 범위의 차이가 존재한다.
- 사용자에게 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-의-차이
'spring' 카테고리의 다른 글
Spring MVC구조 - 내부HTTP요청처리과정 (0) | 2022.05.24 |
---|---|
Spring Boot @Transactional (0) | 2022.05.24 |
spring security + jwt loadUserByUsername에서 엉뚱한 값을 받는다 (0) | 2021.08.26 |