build.gradle에 대해 알아보자 - [Gradle - 1]
오늘 lombok과 mapstruct를 같이 쓰다 문제가 생겨서 아 나는 진짜 하나도 모르는채로 쓰는구나 싶어서 이 기회에 한번 알아보려고 한다.
Gradle이란??
Gradle은 Groovy를 기반으로 한 빌드 도구인데, Ant와 Maven과 같은 이전 세대의 빌드 도구의 단점들을 보완하고 장점들을 취합한 빌드 자동화 도구이다.
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
<scope>provided</scope>
</dependency>
</dependencies>
dependencies {
compileOnly "org.projectlombok:lombok:1.16.16"
}
보다시피 압도적인 간결함으로 gradle이 알아서 해준다.(딸깍 딸깍 끝)
build.gradle

build.gradle은 gradle에서 빌드 작업에 필요한 기본설정, 동작등을 정의한 파일인데 하나씩 알아보자
plugins
프로젝트를 빌드하려면 여라가지 작업을 처리해야 ㅎ하는데(컴파일,jar,war 등의 파일 생성) 이런 작업들을 해주는 plugins를 선언해 주는 곳.
사진 기준 각각 Java 프로젝트 설정, Spring Boot 기능, 의존성 버전 관리 등을 제공한다.
group 및 version 설정
프로젝트의 그룹명과 버전을 설정
java
java 소스의 호환성 버전 설정. 사진 기준 17버전
configuration
gradle 프로젝트에서 의존성 구성을 정의하는데 사용된다.
이 블록을 사용해 여러 종류의 의존성을 정의하고 필요한 설정을 추가하는 등 의존성을 어떻게 관리하고 다룰지 결정
위 사진을 보자면
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
여기서 compileOnly는 annotationProcessor을 구성을 확장하고있는데
이건 annotationProcessor을 컴파일 시에만 사용하도록 설정하는 일반적인 패턴이다.
이걸 설정하면 모든 annotationProcessor를 붙인 dependency가 자동으로 compileOnly도 추가되는건지 뭔지
사실 잘 모르겠음 물어봐야됨
Repositories
저장소 정보를 관리하는 프로퍼티로, 소프트웨어를 등록하고 관리하는 저장소이다.
로컬이나 네트워크에 라이브러리를 공개하고 그 주소를 저장소로 등록하면 저장소에 있는 라이브러리를 Gradle이 취득해 이용할 수 있다.
즉 repositories 블록은 Gradle이 라이브러리를 찾을 때 사용할 저장소들을 정의한다.
dependencies
프로젝트의 의존성을 정의한다. 여기에 필요한 라이브러리들을 넣어주면 그 라이브러리를 참고할 수 있게된다.
compile, implementation, testImplementation 등의 여러가지 옵션이 있는데 다음에 자세히 알아볼 예정
task
Gradle 프로젝트의 작업단위 인데 이러한 task는 groovy 언어로 작성되어지고 Gradle 내부에 미리 만들어져있는 내장 task들과 사용자가 정의해 사용하는 사용자 정의 task 총 2가지의 종류가 존재한다.