[Spring boot]build.gradle파일의 기본 설정 알아보기

윤동환·2022년 12월 28일
0
post-thumbnail

build.gradle파일이란?

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;에 의존성 에러가 발행하였다.

profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글