Programing

Gradle 빌드 스크립트 종속성

lottogame 2020. 5. 31. 09:52
반응형

Gradle 빌드 스크립트 종속성


buildScriptgradle 빌드 섹션 또는 빌드의 루트 레벨에서 리포지토리 선언의 차이점은 무엇입니까?

옵션 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

또는

build.gradle :

repositories {
    mavenCentral();
}

buildScript 블록의 저장소는 buildScript 종속성의 종속성을 가져 오는 데 사용됩니다. 이는 빌드의 클래스 경로에 배치되고 빌드 파일에서 참조 할 수있는 종속성입니다. 예를 들어 인터넷에 존재하는 추가 플러그인.

루트 수준의 리포지토리는 프로젝트가 의존하는 종속성을 가져 오는 데 사용됩니다. 따라서 프로젝트를 컴파일하는 데 필요한 모든 종속성.


빌드 스크립트 (예 : build.gradle)에는 빌드 스크립트 자체 실행에 대한 종속성이있을 수 있습니다. 이러한 종속성을 buildScript 블록 내에 포함합니다. 기본을 넘어서는 Gradle의 4 장 에 자세히 설명되어 있습니다.


나는 당신에게 명확한 개념을주고 싶습니다. 이러한 이유로 이해를 돕기 위해 build.grade 스냅 샷 코드를 첨부 하고 있습니다.

빌드 스크립트 종속성 :

buildscript {
    repositories {
        maven { url("https://plugins.gradle.org/m2/") }
    }

    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
        classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
    }
}

루트 레벨 / 코어 종속성 :

repositories{
    mavenLocal()
    maven { url("https://plugins.gradle.org/m2/") }
    maven { url "https://repo.spring.io/snapshot" }
}

dependencies {
        //Groovy
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'

        //Spock Test
        compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'

        //Test
        testCompile group: 'junit', name: 'junit', version: '4.10'
        testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}

먼저, 한마디로

i) 빌드 스크립트 종속성 jar 파일은 빌드 스크립트 저장소에서 다운로드됩니다. [프로젝트 외부 의존성]

ii) 루트 레벨 종속성 jar 파일은 루트 레벨 저장소에서 다운로드됩니다. [프로젝트 의존성]

여기,

The “buildscript” block only controls dependencies for the buildscript process itself, not for the application code. As various gradle plugin like gradle-cobertura-plugin, gradle-lint-plugin are found from buildscript repos. Those plugins would not be referenced as dependencies for the application code.

But for project compilation and test running jar files like groovy all jar, junit and testng jar will be found from root level repositories.

And another thing, maven { url("https://plugins.gradle.org/m2/") } portion can be used in both blocks. Because they are used for different dependencies.

Resource Link: Difference between dependencies within buildscript closure and core

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

반응형