지금까지 build.gradle 파일을 사용해서 java와 spring 파일들을 빌드했지만, 구조를 정확히 알지 못하는 느낌을 받았다. 그래서 gradle 파일이 어떤식으로 구성되는지 공부해 보려고 한다.
settings.gradle
rootProject.name = 'gradle-study'
setting.gradle에는 루트 프로젝트의 이름이 설정되어 있다.
setting.gradle에 서브 프로젝트를 추가하고, build.gradle에 각각에 맞는 스코프를 만들어 의존성을 주입하면 멀티 프로젝트를 구성할 수 있다.
SourceSet
gradle을 이용해서 프로젝트를 생성하면 아래와 같이 SourceSet을 구성해 준다.
그렇기 때문에 gradle로 프로젝트를 생성하지 않는다면 SourceSet의 구성이 달라진다.
main은 실제 소스코드로 jar 파일로 만들어지는 코드가 위치한다.
test는 테스트를 위한 소스코드가 위치하면 Junit으로 코드를 실행시킨다.
만약 resources에 포함된 *.java 파일을 제외하고 싶다면 아래와 같이 SourceSet을 설정해 주면된다.
sourceSets {
main {
resources {
srcDir "${project.projectDir}/src/main/java"
// exclude "**/*.java" : 하지 말것. Gradle에서 문제 없지만 Eclipse에서 문제를 일으킴.
}
}
}
plugins
plugins {
id 'org.springframework.boot' version '2.4.8'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
id 'java'
}
플러그인 블록은 재사용 가능한 빌드 로직을 패키지화하여 task로 제공해 빌드시 사용할 수 있도록 도와준다.
만약 build.gradle파일 안에 있는 코드를 전부 주석처리하면 아래와 같이 help, build setup, other 만 남는다.
help : 프로젝트에 대한 정보들을 알려주는 역할을 한다.
dependencies를 수행하면 프로젝트의 디펜던시에 대한 정보를 확인할 수 있다.
bulid setup: 그래들 프로젝트를 셋업하는 역할을 한다.
init을 수행시키면 build.gradle이 생성한다.
wapper을 실행하면 gradlew와 gradlew.bat이 생성한다.
다시 주석을 풀고 빌드하면 아래와 같이 많은 task 들이 생긴다.
그 다음 build 라는 task 밑에 build를 실행해 보면 아래와 같이 task 들이 실행되는것을 확인할 수 있다.
option
group = 'com.hyunwook'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
group: 아티팩트의 그룹명이다.
version: release될 버전이다. 빌드시 jar파일 뒤에 version 정보가 붙어서 생성된다.
sourceCompatibility: java 소스를 컴파일 할 때 사용되는 java 버전이다.