스프링
빌드 파일(build.gradle)
생각없는 개발자
2024. 10. 17. 09:57
Spring Boot 프로젝트에서 build.gradle 파일은 프로젝트의 빌드, 의존성, 플러그인 등을 관리하는 역할을 합니다. 여기서 plugins, group, dependencies는 중요한 항목이며, 각각의 의미와 대표적인 예를 자세히 설명하겠습니다.
1. plugins
plugins는 Gradle에서 프로젝트에 사용할 플러그인을 정의하는 부분입니다. 플러그인은 특정 작업을 수행하는 코드 모음으로, 프로젝트 빌드와 실행에 필요한 여러 작업을 자동화해 줍니다.
plugins {
id 'org.springframework.boot' version '3.1.4'
id 'io.spring.dependency-management' version '1.1.3'
id 'java'
}
- org.springframework.boot : Spring Boot 애플리케이션의 빌드, 패키징, 실행 등을 돕는 플러그인입니다. 이 플러그인을 사용하면 Spring Boot 애플리케이션을 쉽게 실행하거나 JAR 파일로 패키징할 수 있습니다.
- io.spring.dependency-management : Spring의 의존성 관리 플러그인으로, Spring Boot 프로젝트에서 사용할 라이브러리들의 버전을 자동으로 관리해줍니다.
- java : Java 프로젝트임을 명시하고, Java와 관련된 빌드 작업을 제공합니다. Spring Boot는 Java 기반 애플리케이션이므로 필수 플러그인입니다.
추가적으로 사용될 수 있는 플러그인:
- id 'war' : 애플리케이션을 WAR 파일로 패키징해야 할 때 사용합니다.
- id 'jacoco' : 테스트 커버리지를 측정할 때 사용하는 플러그인입니다.
2. group
group은 프로젝트의 그룹 ID를 나타내며, Java의 패키지 네임스페이스와 비슷한 개념입니다. Maven과 Gradle 프로젝트에서 이 값을 통해 애플리케이션의 고유 식별자를 설정할 수 있습니다.
group = 'com.example'
- com.example : 회사나 조직의 도메인 이름을 기반으로 설정하는 것이 일반적입니다. 예를 들어, com.mycompany.project와 같은 형태로 설정합니다.
- 이 값은 패키지 구조와 연결되어, 예를 들어 com.example라는 그룹 ID를 사용할 경우 src/main/java/com/example 경로에 프로젝트 코드를 작성하게 되는 경우가 많습니다.
3. dependencies
dependencies는 프로젝트에서 필요한 외부 라이브러리와 의존성들을 정의하는 부분입니다. Spring Boot에서는 다양한 기능을 쉽게 사용할 수 있도록 여러 'starter' 종속성을 제공합니다. 각 의존성은 특정 기능을 구현하거나 라이브러리를 추가하는 역할을 합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
- implementation : 애플리케이션 실행에 필요한 라이브러리를 추가할 때 사용합니다.
- spring-boot-starter-web : 웹 애플리케이션 개발을 위한 기본 의존성으로, Spring MVC 및 내장형 톰캣 서버를 제공합니다.
- spring-boot-starter-thymeleaf : Thymeleaf 템플릿 엔진을 사용해 서버 사이드 렌더링을 할 때 필요한 의존성입니다.
- testImplementation : 테스트를 위한 의존성을 추가할 때 사용합니다.
- spring-boot-starter-test : JUnit, Mockito, AssertJ 등의 테스트 라이브러리를 포함한 기본 테스트 의존성입니다.
기타 자주 사용되는 의존성:
데이터베이스 관련
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.h2database:h2'
implementation 'mysql:mysql-connector-java'
- spring-boot-starter-data-jpa : JPA를 사용해 데이터베이스와 상호작용할 때 사용하는 의존성입니다.
- h2 : H2 메모리 내장형 데이터베이스를 사용합니다.
- mysql-connector-java : MySQL과 연동할 때 사용하는 JDBC 드라이버입니다.
시큐리티 관련
implementation 'org.springframework.boot:spring-boot-starter-security'
- spring-boot-starter-security : Spring Security를 사용하여 인증 및 권한 관리를 할 때 필요한 의존성입니다.
로깅 관련
implementation 'org.springframework.boot:spring-boot-starter-logging'
- spring-boot-starter-logging : 기본적으로 로깅 기능을 제공합니다. Logback이나 SLF4J를 통해 로그 관리가 가능합니다.
4. repositories
repositories는 프로젝트에서 사용할 외부 라이브러리의 다운로드 위치를 지정합니다. 주로 mavenCentral()을 사용하지만, 필요에 따라 jcenter()나 특정 사설 Maven 저장소를 추가할 수도 있습니다.
repositories {
mavenCentral()
}
- mavenCentral() : 대부분의 라이브러리를 다운로드할 수 있는 Maven의 중앙 저장소입니다.
- jcenter() : 추가적인 라이브러리들이 등록되어 있지만, 현재는 대부분 mavenCentral()을 사용합니다.
5. sourceCompatibility
Java 소스 코드의 호환성을 지정합니다. 예를 들어, Java 17을 사용하는 프로젝트는 다음과 같이 설정할 수 있습니다.
sourceCompatibility = '17'