[Spring] 스프링에서 Gradle과 build.gradle코드의 의미

smallcherry's techlog·2022년 3월 19일
0

Spring

목록 보기
1/2

1. gradle이란

gradle이란 오픈소스 빌드 자동화 툴로, 거의 모든 타입의 소프트웨어를 빌드할 수 있는 유연함을 가진다.

Gradle은 실행시켜야 하는 task만 실행시키고 다른 불필요한 동작은 하지 않으며, build cache를 사용함으로써 이전 실행의 task output을 재사용할 수 있어서 퍼포먼스가 뛰어나다는 장점이 있다. 그리고 JVM으로 실행되기 때문에 사용을 위해서 jdk를 설치해야한다는 특징이 있다.

2. Gradle관련 파일들의 의미

Gradle 프로젝트 생성 후 Gradle에 관련되어 생성된 파일구조를 정리하면 아래와 같다.

├─ gradle

│       └─ wrapper

│       ├─ gradle-wrapper.jar

│       └─ gradle-wrapper.properties

├─ gradlew

├─ gradlew.bat

├─ build.gradle

└─ settings.gradle

각각의 파일의 의미에 대해 설명하면 아래와 같다.

  • gradlew: 리눅스 또는 맥OS용 실행 쉘 스크립트 파일

  • gradlew.bat: 윈도우용 실행 배치 스크립트 파일

  • gradle-wrapper.jar: JAR 형식으로 압축된 Wrapper 파일. gradlew나 gradlew.bat 파일이 Gradle task를 실행하는데 사용됨.

  • gradle-wrapper.properties: Gradle Wrapper 설정 정보 파일. Wrapper의 버전 등을 설정할 수 있음.

  • build.gradle: 프로젝트의 라이브러리 의존성, 플러그인, 라이브러리 저장소 등을 설정할 수 있는 빌드 스크립트 파일.

  • settings.gradle: 프로젝트의 구성 정보 파일. 멀티 프로젝트를 구성시 프로젝트를 모듈화할 경우, 하위 프로젝트의 구성을 설정할 수 있음.

이들 중 프로젝트 내용에 관한 설정을 하는 파일은 build.gradle이고 gradle자체의 버전을 바꾸는 것이 아닌 이상 초급자 수준에서는 이 build.gradle파일 외에는 수정할 일이 없다. 그렇다면 build.gradle 코드의 작성에 대해 알아보자.

3. build.gradle 코드의 작성 (Springboot프로젝트에서, gradle버전 4이하의 경우)

실제 작성한 예제 프로젝트의 build.gradle코드를 보며 설명한다.

buildscript { // (1)
    ext {
        springBootVersion = '2.1.9.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

(1) buildscript{}

프로젝트의 플러그인 의존성 관리를 위한 설정. ext는 build.gradle에서 사용하는 전역변수를 사용한다는 의미인데, 여기서는 springBootVersion 전역변수를 생성하고 그 값을 2.1.7.RELEASE로 한다는 의미이다. 즉, spring-boot-gradle-plugin이라는 스프링 부트 그래이들 플러그인의 2.1.7.RELEASE를 의존성으로 받는다는 의미이다.

// (2)
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

(2) 앞서 선언한 플러그인 의존성들을 적용할 것인지를 결정하는 코드. io.spring.dependency-management플러그인은 스프링부터의 의존성을 관리해주는 플러그인이라 꼭 추가해야 한다. java, eclipse, org.springframework를 포함한 이 네 개의 플러그인들은 스프링부트를 사용하기 위한 필수 플러그인들이라 항상 추가하면 된다.

repositories { // (3)
    mavenCentral()
    jcenter()
}

(3) repositories는 각종 의존성(라이브러리)들을 어떤 원격저장소에서 받을 지를 정한다. 기본적으로 maverCentral을 많이 사용하지만 최근에는 라이브러리 업로드의 난이도와 자동 업로드 등 지원하는 기능이 많기 jcenter를 많이 사용한다. (본 코드에서는 둘 다 등록하여 이용한 것이다.)

dependencies { // (4)
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

(4) dependencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳으로, 직접적으로 어떤 라이브러리를 이용하여 코드를 작성할 지 결정하는 것이다. 본 코드에서는 org.springframework.boot:spring-boot-starter-web과 org.springframework.boot:spring-boot-starter-test를 받도록 선언되어있다.

References

profile
Java Developer

0개의 댓글