블로그 이름 뭐하지
[Spring] Gradle 본문
작성한 Java 코드를 설정에 맞게 자동으로 bulid 해주는 빌드 자동화 시스템이다.
Build : 소스코드를 실행가능한 결과물로 만들어주는 일련의 과정.
Gradle을 사용하면 Java 소스코드를 실행이 가능한 jar 파일로 만들어준다.
Gradle Project 구성
▷ .gradle : gradle 버전 별 엔진과 설정 파일
▷ .idea : 에디터 관련 파일
▷ gradle /wapper : 사용자가 gradle을 설치하지 않아도 gradle task를 실행하도록 도와줌
1) gradle-wrapper.jar : Wrapper 파일. 실행 스크립트가 동작하면 Wrapper에 맞는 환경을 로컬 캐시가 다운로드 받은 뒤 명령 task 실행
2) gradel-wrapper.properties : Gradle Wrapper 실행 파일
▷ gradlew : Unix용 실행 스크립트(Mac)
▷ gradlew.bat : Window용 실행 스크립트
▷ bulid.gradle : 의존성이나 플러그인 설정 등 프로젝트 빌드에 관한 기능 정의
▷ settings.gradle : 빌드할 프로젝트 설정
bulid.gradle의 사용
Gradle 기반의 빌드 스크립트.
해당 스크립트를 작성하면 소스코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있다.
groovy 또는 kotlin언어로 스크립트를 작성한다.
파일 자체가 Project 객체이다.
Project 객체: Project 단위에서 필요한 작업을 수행하기 위해 모든 메서드와 프로퍼티를 모아둔 슈퍼 객체
메서드
bulid.gradle이 가진 메서드 중 대표적인 것은 plugins, responsitories, dependencies, application 이다.
{}로 감싸진 부분은 Groovy의 클로저이다. Java의 람다식과 같은 부분으로 메서드의 인자로 넘겨질 수 있다.
1. plugins
플러그인(plugin) : gradle task(어플리케이션 빌드부터 테스트까지의 작업 수행 단위)의 집합.
작업을 일일히 Gradle 파일에 정의해두면 복잡하고 비효율적이므로 개발사에서 미리 만든 Plugin 형태로 묶어둔다.
그 플러그인을 적용해두는 메서드이다.
//안드로이드 프로젝트의 플러그인 적용(apply)
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
//Spring 프로젝트의 플러그인 적용
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.4'
id 'io.spring.dependency-management' version '1.1.6'
}
2. responsitories
저장소 설정을 담당한다.
클로저 내용은 RepositoryHandler를 통해 실행되며
Maven 중앙 저장소 추가를 위한 mavenCentral 메서드와
Bintray의 jCenter 저장소 추가를 위한 jcenter 메서드를 제공한다.
//사내 maven repository에서 라이브러리를 가져올 때의 명시
repositories {
mavenCentral()
maven {
allowInsecureProtocol(true)
url 'https://repo.company.com/repository/maven-repository/'
}
}
3. dependencies
의존성 라이브러리를 추가할 때 사용된다.
개발에 필요한 외부 라이브러리들을 dependencies 부분에 작성 시
해당 라이브러리들을 Maven Repository(라이브러리 저장소)같은 외부 저장소에서 자동으로 다운로드 한다.
라이브러리 추가 후 코끼리 모양의 표시(gradle)가 뜨면 눌러 리프레시를 해주어야 적용이 된다.
의존성을 자동으로 관리해주어 라이브러리의 충돌 걱정이 없다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
implementation : 의존 라이브러리 수정시 본 모듈까지만 재 빌드한다
api : 의존 라이브러리 수정시 본 모듈을 의존하는 모듈들을 모두 재 빌드한다
complieOnly : complie 시만 빌드하고 빌드 결과물에는 포함되지 않는다
testImplemetation : 테스트 코드를 수행할 때만 적용한다
annotaionProcessor : annotation processer을 명시한다.
참고한 링크
[Gradle] build.gradle의 동작원리 한 번에 정리하기
build.gradle은 무엇인가? build.gradle은 파일 자체가 Project 오브젝트(객체)로, Project 오브젝트는 Project 인터페이스를 구현하는 구현체이다. Project 오브젝트는 Project 단위에서 필요한 작업을 수행하기
kotlinworld.com
[Gradle] Plugin이란 무엇인가? 플러그인 이해하고 Custom Plugin 만들기
Gradle Plugin이란? Plugin이란 Gradle Task의 집합이다. Gradle Task는 어플리케이션 빌드부터 테스트까지 다양한 작업을 수행하는 작업 단위를 뜻한다. *만약 Task에 대한 이해가 부족하다면 다음글을 참조
kotlinworld.com
[Gradle]build.gradle 작성 방법 및 동작 원리 (Gradle 명령어, Gradle 프로젝트 구조, task 정의)
build.gradle 작성 방법 및 동작 원리 - Gradle이란? - Gradle 프로젝트 구조 - Gradle 명령어 - Gradl...
blog.naver.com
'Spring' 카테고리의 다른 글
[Spring] JDBC (0) | 2024.09.30 |
---|---|
[Spring] Spring MVC (0) | 2024.09.30 |
[Spring] application.properties (0) | 2024.09.29 |
[Spring] Lombok (0) | 2024.09.29 |
[Spring] IntelliJ 테스트 코드 설정 (0) | 2024.09.29 |