build.gradle 의미와 설정

#SPRING_002
Jan 28, 2024
build.gradle 의미와 설정
 
 

😋 Intro

Spring Boot에서 ‘build.gradle’파일은 Gradle을 사용하는 프로젝트의 설정과 의존성 관리를 위한 핵심파일이다. 이 파일은 프로젝트의 빌드 과정과 실행에 필요한 다양한 설정을 정의한다. ‘build.gradle’의 주요 역할과 설정 가능한 내용들을 한 번 알아보자.
 
  • build.gradle파일은 프로젝트 내부에 코끼리 모양과 함께 목록에 올라와있다.
notion image
 
 

💁‍♂️ 프로젝트 의존성 정의 #Dependencies

프로젝트 의존성 정의는 Gradle을 사용하는 Spring Boot 프로젝트에서 중요한 부분이다. 이는 ‘build.gradle’파일 내의 ‘dependencies’ 블록에서 수행되며, 프로젝트가 필요로 하는 모든 라이브러리들을 명시한다. 여기 의존성 유형은 대표적으로 세 가지가 있다.
  • ‘implementation’
    • 프로젝트 코드에서 직접 사용되는 라이브러리의 추가를 도와준다.
  • ‘testImplementation’
    • 테스트 시에만 필요한 라이브러리 추가를 도와준다.
  • ‘compileOnly’
    • 컴파일 시에만 필요하고, 런타임에는 포함되지 않는 라이브러리를 추가한다.
 
notion image
🟡‘spring-boot-starter-web’
Spring Boot 개발에 필요한 기본 구성요소를 포함하는 의존성이다. 예를 들어 Spring MVC, RESTful API, 내장된 Tomcat서버 등을 사용할 수 있다.
 
🟡‘sptring-boot-starter-test’
테스트 케이스 작성과 실행을 위해 필요한 의존성이다. JUnit, Spring Test, MockMVC등 테스트를 위한 다양한 라이브러리가 포함되어 있다.
 
 

🙆‍♂️ 플러그인 설정 #Plugins

Sping Boot 프로젝트에서 플러그인은 기존 의미대로 기능을 확장하고, 특수 기능을 처리하는 데 효과적이다. 이러한 플러그 인들은 ‘plugins’블록에서 정의된다.
 
notion image
🟡Spring Boot Gradle 플러그 인
이 플러그인은 Spring Boot 애플리케이션을 실행하는데 필수적이다. 실행 가능한 JAR파일을 생성하고, Spring Boot의 의존성을 관리하며 애플리케이션의 자동 구성을 제공한다.
 
🟡JAVA 플러그인
JAVA 애플리케이션을 빌드하기 위한 플러그인이다. JAVA 컴파일 기능과 기본 태스크등을 제공한다.
 
🟡Spring Defendency Management 플러그 인
Spring Boot의 의존성 버전을 자동으로 관리할 수 있게 한다. 별도로 버전을 명시하지 않아도 Spring Boot가 권장하는 버전의 의존성을 사용하도록 도와준다.
 
 

👨‍💻 저장소 설정 #Repositories

저장소 설정Repositories configurationGradle 또는 Maven과 같은 빌드 도구에서 외부 라이브러리 의존성/dependencies 를 다운로드하기 위해 사용되는 원격 또는 로컬 저장소를 지정하는 과정이다. 이 설정은 ‘build.gradle’ 파일에서 정의되며, 프로젝트가 필요로 하는 모든 의존성이 어디에서 가져와야 할지를 결정한다. 저장소가 하는 역할은 다음과 같다.
  • 의존성dependencies 다운로드
    • 프로젝트가 필요로 하는 외부 라이브러리나 모듈을 다운로드하기 위해 저장소를 지정해야한다.
  • 저장소 유형
    • 일반적으로 Maven 중앙 저장소가 사용되나, 회사 내부 저장소나 다른 공개 저장소를 사용할 수 있다.
  • 멀티 저장소 지원
    • 여러 저장소를 지정할 수 있고, Gradle이나 Maven은 이러한 저장소를 순차적으로 검색하여서 필요한 의존성을 찾는다.
       
notion image
🟡 ‘mavenCentral()’
가장 일반 적으로 사용되는 공개 Maven 저장소이다.
 
🟡 ‘jcenter()’
Bintray의 JCenter 저장소이며, Maven 중앙 저장소와 유사한 라이브러리를 제공한다.
 
🟡 ‘maven { url ‘http://repo.mycompany.com/maven2’}
필요에 따라 회사 내부 저장소나 다른 추가적인 저장소를 지정할 때 이러한 방식을 사용한다.
 
 

💽 프로젝트 메타데이터

프로젝트 메타데이터는 Gradle또는 Maven과 같은 빌드 도구에서 프로젝트에 관한 기본적인 정보를 제공한다. 이 정보는 프로젝트를 식별하고, 빌드 및 배포 과정에서 중요한 역할을 하며 일반적으로 프로젝트의 이름, 버전, 설명, 그룹ID가 포함된다. 프로젝트 메타데이터가 중요한 이유는 다음과 같다.
  • 프로젝트 식별
    • 프로젝트의 고유한 식별자를 제공한다. 이는 라이브러리를 저장소에 배포하거나 다른 프로젝트에서 의존성으로 추가할 때 중요하다.
  • 버전관리
    • 프로젝트 버전을 명시하여 빌드 및 릴리스 관리를 용이하게 한다.
  • 라이브러리 의존성
    • 다른 프로젝트에서 이 프로젝트를 의존성으로 추가할 때 필요한 정보를 제공한다.
       
notion image
🟡 group = ‘com.example’
프로젝트의 그룹 ID를 지정한다. 일반적으로 도메인 이름을 역순으로 사용한다.
 
🟡 version = ‘0.0.1-SNAPSHOT’
프로젝트의 현재 버전을 명시한다. ‘-SNAPSHOT’은 개발 중인 버전을 나타낸다.
🟡 sourceCompatibility = '17'
프로젝트가 사용할 JAVA버전을 지정한다. 여기서는 JAVA17을 사용하고 있음을 나타낸다.
 

🏗️ 빌드 구성 #Build Configuration

빌드 구성 Build Configuration 은 Gradle 또는 Maven과 같은 빌드 도구를 사용할 때 프로젝트의 빌드 과정을 어떻게 처리할지 결정하는 설정이다. 이 구성은 프로젝트의 컴파일, 테스트, 패키징, 배포 등의 과정을 관리한다. 빌드 구성이 중요한 이유는 다음과 같다.
  • 커스텀 빌드 로직
    • 프로젝트의 특정 요구사항에 맞춰 빌드 과정을 커스터마이즈 할 수 있다.
  • 빌드 과정의 자동화
    • 반복적인 빌드 작업을 자동화하여 개발 효율성을 높일 수 있다.
  • 다양한 환경 지원
    • 개발, 테스트, 프로덕션 등 다양한 환경에 맞는 빌드 설정을 구성할 수 있다.
 
notion image
 
🟡 task customTask (type : Copy {}
Copy타입의 태스크를 정의한다. 이 태스크는 src/main/resources 디렉토리에서 특정 파일을 buiild/resources 로 복사한다.
 
🟡 build { }
블록 내에서 dependsOn customTask를 사용하여 빌드 프로세스가 customTask에 의존하도록 설정한다. 이는 빌드 수행전에 customTask를 실행하게 한다.
Share article
RSSPowered by inblog