Gradle
오픈소스 빌드 자동화 툴
거의 모든 타입의 소프트웨어를 빌드할 수 있는 유연함이 강점인 툴로 Maven 보다 빌드 스크립트 작성이 간편하다.
1. Gradle 특징
- 오픈 소스 기반 빌드 자동화 툴
- Groovy 기반 : 자바와 문법이 유사하여 자바 개발자가 쉽게 익힐 수 있다.
- Maven에 비해 빌드 시간이 짧고 빠른 성능을 보인다.
- convention을 기반으로 빌드하여 스크립트 규모가 작고 가독성이 높다.
- configuration injection을 사용해서 프로젝트 조건을 체크할 수 있어 프로젝트별 cofiguration을 다르게 설정할 수 있다.
- 멀티 프로젝트 빌드 지원을 위해 설계되었다.
- Andorid Studio, IntelliJ IDEA, Eclipse 등의 IDE에서 Gradle을 임포트해서 사용할 수 있다.
유연성, 사용 편의성, 성능 면에서 우수한 빌드 자동화 툴 = Gradle
2. Gradle-Spring Boot project
├─ gradle
│ └─ wrapper
│ ├─ gradle-wrapper.jar
│ └─ gradle-wrapper.properties
├─ gradlew
├─ gradlew.bat
├─ build.gradle
└─ settings.gradle
- gradlew
리눅스, 맥 운영체제 용 실행 쉘 스트립트 파일 - gradlew.bat
윈도우 운영체제 용 실행 배치 스크립트 파일 - gradle-wrapper.jar
JAR 형식으로 압축된 wrapper 파일로, 프로젝트의 gradlew, gradlew.bat가 이 jar 파일을 사용하여 gradle task를 실행한다. - gradle-wrapper.properties
gradle wrapper 설정 정보 파일로, wrapper 버전 등 세부 설정이 가능하다. - build.gradle
프로젝트 라이브러리 의존성, 플러그인, 라이브러리 저장소 등을 설정할 수 있는 빌드 스크립트 파일 - settting.gradle
프로젝트 구성 정보 파일,
멀티 프로젝트를 구성하여 프로젝트를 모듈화할 경우 하위 프로젝트의 구성을 설정할 수 있다.
3. 라이브러리 의존성 관리
- repository : 의존성 모듈을 저장하는 곳
- local / remote 인지는 repository 선언을 통해 알려줄 수 있다.
- 특정 task실행시키기 위해 필요한 의존성들을 런타임에 remote 또는 local repository에서 import (= dependency resolution)
- dependency cache (로컬 캐시)에 의존성 파일을 저장해 두고 사용한다.
build.gradle
- 라이브러리 의존성 설정을 위한 스크립트 파일
- 플러그인, 저장소, 의존성 등을 설정
- Groovy(default) 또는 Kotlin 으로 작성
- spring boot project - build gradle example
plugins {
id 'org.springframework.boot' version '2.3.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.example' // 프로젝트 생성시 사용자의 group 이름으로 자동 생성
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11' //사용하는 JDK 버전
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.webjars:bootstrap:4.5.0'
implementation 'org.webjars:jquery:3.5.1'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
repository 선언하기
...
repositories{
mavenCentral() or jcenter() or google()
}
...
- repository 종류
- 포맷에 따른 구분
- Maven 기반 저장소
- Ivy 기반 저장소
- 로컬 디렉토리 형식 저장소
- 연결성에 따른 구분
- 인증 체계가 구성된 저장소
- 원격 프로토콜로 연결 가능한 저장소
- 포맷에 따른 구분
dependency 설정하기
... // ex)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.webjars:bootstrap:4.5.0'
implementation 'org.webjars:jquery:3.5.1'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
- 의존성이 사용될 범위를 설정하는 것
- implementation: 구현할 때만 사용
- compileOnly: 컴파일 할 때만 사용
- runtimeOnly: 런타임에만 사용
- testImplementation: 테스트할 때만 사용
References
'웹 개발 > Spring Boot' 카테고리의 다른 글
Spring Boot) 4. 스프링 부트 웹 개발 (2) | 2021.04.28 |
---|---|
Spring boot) 3. 스프링 프레임워크 (0) | 2021.04.28 |
Spring Boot) 2. 서블릿 Servlet (0) | 2021.04.28 |
Spring Boot) 1. 개발 환경의 변화와 자바 (0) | 2021.04.28 |
Spring Boot) Spring Boot 프로젝트 예제로 기초 이해하기 / Building an Application with Spring Boot (0) | 2021.04.22 |