본문 바로가기
[개발] 프레임워크/Spring

build.gradle 파일 문법에 대해서 알아보자.

by Devsong26 2024. 10. 22.

플러그인 설정

  • Gradle은 다양한 기능을 제공하는 플러그인을 사용할 수 있습니다.
plugins {
	id 'java' // Java 플러그인 적용
}

 

 

프로젝트 속성 설정

  • group, version, sourceCompatibility 등 프로젝트의 기본 속성을 설정할 수 있습니다.
group = 'com.example' // 프로젝트 그룹 ID
version = '1.0.0'	 // 프로젝트 버전
sourceCompatibility = '17' // 사용될 Java 버전 (Java 17)

 

 

의존성 관리

  • 프로젝트에서 사용되는 라이브러리와 의존성을 선언하는 부분입니다.
  • dependencies 블록을 사용해 의존성을 추가합니다.
depedencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:2.5.4'
    testImplementation 'org.springframework.boot:spring-boot-starter-test:2.5.4'
}
  • implementation: 런타임과 컴파일 시 모두 필요한 의존성입니다.
  • testImplementation: 테스트 환경에서만 필요한 의존성입니다.
  • compileOnly: 컴파일 시에만 필요한 의존성입니다.
  • runtimeOnly: 런타임 시에만 필요한 의존성입니다.

 

 

저장소 설정

  • Gradle은 기본적으로 라이브러리를 다운로드할 저장소를 설정해야 합니다.
  • 가장 일반적인 저장소는 Maven Central과 JCenter입니다.
repositories {
    mavenCentral() // Maven 중앙 저장소
    jcenter() // JCenter 저장소
}

 

 

테스트 설정

  • 테스트는 test 태스크를 통해 수행되며, test 블록에서 테스트 관련 설정을 할 수 있습니다.
test {
	useJUnitPlatform() // JUnit 5를 사용하도록 설정
}

 

 

Ext (Extra Properties)

  • 프로젝트 전체에서 사용할 수 있는 변수를 설정할 수 있으며, 이를 통해 코드의 재사용성을 높이고 중복을 줄일 수 있습니다.
  • 변수를 사용할 때는 ${변수명} 으로 사용합니다.
ext {
	springVersion = '5.3.10'
	logbackVersion = '1.2.3'
}

depedencies {
	implementation "org.springframework:spring-core:${springVersion}"
	implementation "ch.qos.logback:logback-classic:${logbackVersion}"
}

 

 

Dependency Management

  • 주로 Spring Boot 프로젝트에서 사용되는 개념으로, 프로젝트에서 사용할 의존성의 버전을 중앙에서 관리할 수 있도록 합니다.
  • 특정 모듈에 직접 의존성을 추가하지 않고도 버전 관리를 할 수 있는 기능을 제공합니다.
dependencyManagement {
    imports {
    	mavenBom 'org.springframework.boot:spring-boot-dependencies:2.5.4'
    }
}
  • 위 예시에서 spring-boot-dependencies라는 BOM (Bill of Materials)을 사용하여 Spring Boot 관련 의존성 버전을 중앙에서 관리하면 하위 모듈에서 별도의 버전을 명시하지 않아도 일관된 버전으로 의존성을 사용할 수 있습니다.
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
  • 보통 스프링 부트는 플러그인 영역에 버전이 명시되어 있으므로 위의 예시 처럼 할 필요는 없습니다.
  • 특정 모듈 예시: spring-cloud-dependencies

 

 

태스크 (Tasks) 정의

  • Gradle 빌드에서 실행할 작업을 tasks 블록을 통해 정의할 수 있습니다.
  • 각 작업은 빌드 과정의 특정 단계를 나타냅니다.
task hello {
    doLast {
    	println 'Hello, Gradle!'
    }
}
  • doLast: 태스크가 끝날 때 실행될 동작을 정의합니다.
  • doFirst: 태스크가 시작될 때 실행될 동작을 정의합니다.