😋 Intro
Spring Boot에서
‘build.gradle’
파일은 Gradle을 사용하는 프로젝트의 설정과 의존성 관리를 위한 핵심파일이다. 이 파일은 프로젝트의 빌드 과정과 실행에 필요한 다양한 설정을 정의한다. ‘build.gradle’
의 주요 역할과 설정 가능한 내용들을 한 번 알아보자. - build.gradle파일은 프로젝트 내부에 코끼리 모양과 함께 목록에 올라와있다.
💁♂️ 프로젝트 의존성 정의 #Dependencies
프로젝트 의존성 정의는
Gradle
을 사용하는 Spring Boot
프로젝트에서 중요한 부분이다. 이는 ‘build.gradle’
파일 내의 ‘dependencies’
블록에서 수행되며, 프로젝트가 필요로 하는 모든 라이브러리들을 명시한다. 여기 의존성 유형은 대표적으로 세 가지가 있다. ‘implementation’
프로젝트 코드에서 직접 사용되는 라이브러리의 추가를 도와준다.
‘testImplementation’
테스트 시에만 필요한 라이브러리 추가를 도와준다.
‘compileOnly’
컴파일 시에만 필요하고, 런타임에는 포함되지 않는 라이브러리를 추가한다.
🟡
‘spring-boot-starter-web’
Spring Boot 개발에 필요한 기본 구성요소를 포함하는 의존성이다. 예를 들어 Spring MVC, RESTful API, 내장된 Tomcat서버 등을 사용할 수 있다.
🟡
‘sptring-boot-starter-test’
테스트 케이스 작성과 실행을 위해 필요한 의존성이다. JUnit, Spring Test, MockMVC등 테스트를 위한 다양한 라이브러리가 포함되어 있다.
🙆♂️ 플러그인 설정 #Plugins
Sping Boot 프로젝트에서 플러그인은 기존 의미대로 기능을 확장하고, 특수 기능을 처리하는 데 효과적이다. 이러한 플러그 인들은 ‘plugins’블록에서 정의된다.
🟡
Spring Boot Gradle
플러그 인이 플러그인은 Spring Boot 애플리케이션을 실행하는데 필수적이다. 실행 가능한 JAR파일을 생성하고, Spring Boot의 의존성을 관리하며 애플리케이션의 자동 구성을 제공한다.
🟡
JAVA
플러그인JAVA 애플리케이션을 빌드하기 위한 플러그인이다. JAVA 컴파일 기능과 기본 태스크등을 제공한다.
🟡
Spring Defendency Management
플러그 인Spring Boot의 의존성 버전을 자동으로 관리할 수 있게 한다. 별도로 버전을 명시하지 않아도 Spring Boot가 권장하는 버전의 의존성을 사용하도록 도와준다.
👨💻 저장소 설정 #Repositories
저장소 설정
Repositories configuration
은 Gradle
또는 Maven
과 같은 빌드 도구에서 외부 라이브러리 의존성/dependencies
를 다운로드하기 위해 사용되는 원격 또는 로컬 저장소를 지정하는 과정이다. 이 설정은 ‘build.gradle’ 파일에서 정의되며, 프로젝트가 필요로 하는 모든 의존성이 어디에서 가져와야 할지를 결정한다. 저장소가 하는 역할은 다음과 같다. - 의존성
dependencies
다운로드
프로젝트가 필요로 하는 외부 라이브러리나 모듈을 다운로드하기 위해 저장소를 지정해야한다.
- 저장소 유형
일반적으로
Maven
중앙 저장소가 사용되나, 회사 내부 저장소나 다른 공개 저장소를 사용할 수 있다. - 멀티 저장소 지원
여러 저장소를 지정할 수 있고, Gradle이나 Maven은 이러한 저장소를 순차적으로 검색하여서 필요한 의존성을 찾는다.
🟡
‘mavenCentral()’
가장 일반 적으로 사용되는 공개 Maven 저장소이다.
🟡
‘jcenter()’
Bintray의 JCenter 저장소이며, Maven 중앙 저장소와 유사한 라이브러리를 제공한다.
🟡
‘maven { url ‘http://repo.mycompany.com/maven2’}
필요에 따라 회사 내부 저장소나 다른 추가적인 저장소를 지정할 때 이러한 방식을 사용한다.
💽 프로젝트 메타데이터
프로젝트 메타데이터는
Gradle
또는 Maven
과 같은 빌드 도구에서 프로젝트에 관한 기본적인 정보를 제공한다. 이 정보는 프로젝트를 식별하고, 빌드 및 배포 과정에서 중요한 역할을 하며 일반적으로 프로젝트의 이름, 버전, 설명, 그룹ID가 포함된다. 프로젝트 메타데이터가 중요한 이유는 다음과 같다. - 프로젝트 식별
프로젝트의 고유한 식별자를 제공한다. 이는 라이브러리를 저장소에 배포하거나 다른 프로젝트에서 의존성으로 추가할 때 중요하다.
- 버전관리
프로젝트 버전을 명시하여 빌드 및 릴리스 관리를 용이하게 한다.
- 라이브러리 의존성
다른 프로젝트에서 이 프로젝트를 의존성으로 추가할 때 필요한 정보를 제공한다.
🟡
group = ‘com.example’
프로젝트의 그룹 ID를 지정한다. 일반적으로 도메인 이름을 역순으로 사용한다.
🟡
version = ‘0.0.1-SNAPSHOT’
프로젝트의 현재 버전을 명시한다.
‘-SNAPSHOT’
은 개발 중인 버전을 나타낸다.
🟡
sourceCompatibility = '17'
프로젝트가 사용할 JAVA버전을 지정한다. 여기서는 JAVA17을 사용하고 있음을 나타낸다.
🏗️ 빌드 구성 #Build Configuration
빌드 구성
Build Configuration
은 Gradle 또는 Maven과 같은 빌드 도구를 사용할 때 프로젝트의 빌드 과정을 어떻게 처리할지 결정하는 설정이다. 이 구성은 프로젝트의 컴파일, 테스트, 패키징, 배포 등의 과정을 관리한다. 빌드 구성이 중요한 이유는 다음과 같다. - 커스텀 빌드 로직
프로젝트의 특정 요구사항에 맞춰 빌드 과정을 커스터마이즈 할 수 있다.
- 빌드 과정의 자동화
반복적인 빌드 작업을 자동화하여 개발 효율성을 높일 수 있다.
- 다양한 환경 지원
개발, 테스트, 프로덕션 등 다양한 환경에 맞는 빌드 설정을 구성할 수 있다.
🟡
task customTask (type : Copy {}
Copy
타입의 태스크를 정의한다. 이 태스크는 src/main/resources
디렉토리에서 특정 파일을 buiild/resources
로 복사한다.🟡
build { }
블록 내에서
dependsOn customTask
를 사용하여 빌드 프로세스가 customTask
에 의존하도록 설정한다. 이는 빌드 수행전에 customTask
를 실행하게 한다.Share article