아무래도 Spring 공부를 위해선 부가적인 공부도 확실히 필요한 것 같다.
Gradle은 Ant와 Maven의 장점을 모아서 만들었다. 의존성 관리를 위한 다양한 방법을 제공하고 Build Script를 XML언어가 아닌, JVM에서 동작하는 Sciprt 언어 DSL(Domain Specific Language)를 사용한다.
그루비(Groovy)는 자바 문법과 유사해 자바 개발자가 쉽게 익힐 수 있는 장점이 있고, Gradle Wrapper를 이용하면 Gradle이 설치되지 않은 시스템에서도 프로젝트를 Build 할 수 있다.
Maven과 같은 구조화된 Build Framework (구조의 전환이 가능)
Multi Project Build 지원
의존성 관리의 다양한 방법 제공
Build를 구성하기 위한 풍부한 도메인 모델 제공
Plugin 설정
: Plugin은 미리 구성해놓은 task들의 그룹이며, 특정 빌드과정에 필요한 기본정보를 포함하고, 필요에따라 정보를 수정해 목적에 맞게 사용할 수 있다.
ex)
plugins {
id 'org.springframework.boot' version '2.3.12.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
// project info
group = 'com.example'
// project version
version = '0.1'
// JDK version
sourceCompatibility = '17.0'
: Java 프로젝트를 위해 정의한 'JAVA Plugin'에서는 comileJava, classes, test, jar 등의 task를 제공한다.
: Web 프로젝트를 위한 'WAR Plugin'에서는 Application 소스를 war파일로 묶어주는 war task를 제공한다.
저장소 설정
: Gradle은 Maven repository, JCenter repository, Ivy directory 등 다양한 저상소를 지원한다.
ex)
repositories {
mavenLocal() // maven local cash repository
mavenCentral() // maven central repository
maven { Url "http://repo.company.com/maven" } // maven remote repository
}
의존관계 설정
: Gradle은 java의 의존성 관리를 위해 다양한 구성을 제공하고 있다. 7.0 버전으로 들어오면서 몇몇 부분의 명령어가 바뀌었으니 이에 주의
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation('org.springframework.boot:spring-boot-starter-test) {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
테스팅
: Gradle은 테스트 시 특정 테스트만 진행할 수 있으며, 테스트의 결과를 따로 받아볼 수도 있다. 테스트를 detection하고 그룹화 하여 테스트를 진행할 수 있도록 도움을 주고 있다.
ex)
test {
useJUnitPlatform()
}
사용해보면서 정리할 내용이 있다면, 여기에 추가하거나 새로 포스트를 쓰는 걸루.
참조
Gradle 이란?