본문 바로가기
🖥Web/🔥SpringBoot

[SpringBoot] build.gradle, repositories, dependencies, repositories, dependencies란?

by 후누스 토르발즈 2021. 12. 18.
반응형

 

 

Gradle이란?

Gradle은 유연성과 성능에 중점을 둔 오픈 소스 빌드 자동화 도구입니다.

Gradle 빌드 스크립트는 *Groovy 또는 Kotlin *도메인 특화 언어(DSL)을 사용하여 작성됩니다.

 

 

💡도메인 특화 언어(DSL: Domain-specific language)

  • 특정한 도메인을 적용하는데 특화된 컴퓨터 언어

💡Groovy

  • Groovy는 자바에 파이썬, 루비, 스몰토크등의 특징을 더한 동적 객체 지향 프로그래밍 언어이다.

 

 

Gradle scripts는 Configuration scripts 입니다. script가 실행되면 특정 유형의 개체를 구성합니다.

예를들면 build script가 실행될때 프로젝트 유형의 개체를 구성합니다.

이 개체를 스크립트의 대리자 개체 라고 합니다.

 

스크립트 유형 인스턴스에 의한 대리인
build script Project
Init script Gradle
Settings script Settings

대리자개체의 속성과 메서드는 스크립트에서 사용할 수 있습니다.

 

각 Gradle script는 스크립트 인터페이스를 구현합니다. 이 인터페이스는 스크립트에서 사용할 수 있는 여러 속성과 메서드를 정의합니다.

 

 

빌드스크립트 구조

Block Description
allprojects { } 이 프로젝트와 각 하위 프로젝트를 구성합니다.
artifacts { } 이 프로젝트에 대해 게시된 아티팩트를 구성합니다.
buildscript { } 이 프로젝트에 대한 빌드 스크립트 클래스 경로를 구성합니다.
configurations { } 이 프로젝트에 대한 종속성 구성을 구성합니다.
dependencies { } 이 프로젝트에 대한 종속성을 구성합니다.
repositories { } 이 프로젝트의 저장소를 구성합니다.
sourceSets { } 이 프로젝트의 소스 세트를 구성합니다.
subprojects { } 이 프로젝트의 하위 프로젝트를 구성합니다.
publishing { } PublishingExtension 게시 플러그인에 의한 추가된 항목을 구성합니다.

 

빌드 스크립트는 또한 Groovy 스크립트이므로 메서드 정의 및 클래스 정의와 같이 Groovy 스크립트에서 허용되는 요소를 포함할 수 있습니다.

 

 

✔️buildscript block의 repositories는 buildscript dependenciesdependencies를 가져오는 데 사용됩니다.

이러한 dependencies는 build의 class path에 배치되며 build file에서 참조할 수 있습니다.

예를 들어 인터넷에 있는 추가 플러그인이 있습니다.

 

✔️root level의 repositories는 Project가 dependencies되는 dependencies를 가져오는 데 사용됩니다.

따라서 Project를 Compile하는 데 필요한 모든 dependency을 확인할 수 있습니다.

 

 

 

build.gradle(gradle version 7.1)

buildscript {
    // build.gradle에서 사용하는 전역변수 설정
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    // 의존성으로 설정
    dependencies {
        // spring-boot-gradle-plugin:2.1.7.RELEASE를 의존성으로 받겠다. (스프링 부트 그레이들 플러그인의 2.1.7 RELEASE)
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

plugins {
    id 'java'
    id 'eclipse'
    id 'org.springframework.boot' version '2.3.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'    // 스프링부트의 의존성들을 관리해주는 플러그인이여서 필수
}

group 'com.jojoldu.book'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8 // 자바소스를 컴파일시키는 역할, 버전 명시

repositories {
    mavenCentral() // 오픈 소스 라이브러리를 호스팅하는 저장소, sonatype.org이 운영하는 Maven Repository
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

test {
    useJUnitPlatform()
}

 

 

 

 

 

참조: https://stackoverflow.com/questions/13923766/gradle-buildscript-dependencies

참조: https://docs.gradle.org/current/dsl/#N10060

반응형