gradle을 통해 빌드 될 수 있도록 설정하는 파일
프로젝트 기본 설정, 의존성 주입, 플러그인, 레포지토리 설정 등의 정보가 들어있다.
예시 코드
buildscript {
ext {
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter() }
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
**************************************
//레거시 코드
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
**************************************
//현재 코드
plugins {
id 'org.springframework.boot' version '2.4.1'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
id 'eclipse'
}
**************************************
group 'com.jojoldu.book'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
**************************************
//레거시 코드
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
**************************************
//현재 코드
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.projectlombok:lombok')
testImplementation('org.springframework.boot:spring-boot-starter-test')
testImplementation 'junit:junit:4.13.1'
testImplementation 'org.testng:testng:7.1.0'
}
**************************************
ext : 전역 변수를 설정한다.
-> 위의 코드에선 스프링 부트 그래들 플로그인의 2.1.7.RELEASE를 의존성으로 받겠다는 의미
repositories : 저장소를 의미한다.
-> mavenCentral은 중앙 레포지토리 (라이브러리 업로드 난이도가 높다.)
-> jcenter는 mavenCentral 저장소의 문제점을 개선한 레포지토리
dependencies : 의존성을 추가한다.
(인텔리제이는 maven 저장소의 데이터를 인덱싱하여 관리하므로 커뮤니티 버전을 사용해도 의존성 자동 완성이 가능하다.)
apply plugin : 자바와 스프링을 사용하기 위한 필수 플러그인들이다.
-> io.spring.dependency-management플러그인은 스프링 부트의 의존성들 을 관리해 주는 플러그인입니다.
위에 설정된 4개의 플러그인은 필수 플러그인으로 항상 추가해야 한다.
implementation('org.projectlombok:lombok')
는 자바 개발할 때 자주 사용하는 코드 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성해 줍니다.
plugin
재사용 성 및 유지보수를 편하게 하기위함
기존의 apply plugin방식을 사용할 수 있지만, 기본적으로 plugins를 사용하여 전체 프로젝트에 적용시킨다.
서브 프로젝트에 적용시키기 위해선plugins { id 'com.example.hello' version '1.0.0' apply false id 'com.example.goodbye' version '1.0.0' apply false }
이처럼 apply false를 선언하준뒤 사용시 apply plugin으로 명시해주면 된다.
dependencise
implementation이 compile 보다 빠르고 빌드 시 api가 노출되지 않아 보안성도 좋다고 한다. 그래서 compile의 사용이 권장되지 않는다고 한다.
테스트를 위해 필요한 의존성
testImplementation 'junit:junit:4.13.1' testImplementation 'org.testng:testng:7.1.0'
위의 두개를 제거하고 테스트를 해보았더니 Test파일의
import org.junit.Test; import org.junit.runner.RunWith;
에 의존성 에러가 발행하였다.