Gradle 빌드 스크립트 종속성


176

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

옵션 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

또는

build.gradle :

repositories {
    mavenCentral();
}

답변:


165

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

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


19
빌드 스크립트와 프로젝트 모두에 maven central이 필요한 경우 두 번 선언해야합니까?
Marcin Koziński 2016 년

18
예, 실제로 두 번 지정해야합니다.
Hiery Nomus

예를 들어, 스프링 propdeps 플러그인을 빌드 스크립트에 추가하여 일반적인 "compile"및 "testCompile"키워드 외에 "provided"및 "optional"키워드를 종속성에 사용할 수 있습니다. 참고 : war 플러그인은 이미 "제공된"키워드를 제공하므로 전쟁 내부에 배치 될 jar 프로젝트에 대한 propdeps 만 있으면됩니다.
Powerlord

14

나는 당신에게 명확한 개념을주고 싶습니다. 이러한 이유로 이해를 돕기 위해 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 파일은 루트 레벨 저장소에서 다운로드됩니다. [프로젝트 의존성]

여기,

"buildscript"블록은 응용 프로그램 코드가 아니라 빌드 스크립트 프로세스 자체의 종속성 만 제어합니다. 다양한 Gradle을 플러그인 등이 gradle-cobertura-plugin, gradle-lint-pluginbuildscript의 REPOS에서 발견된다. 이러한 플러그인은 애플리케이션 코드의 종속성으로 참조되지 않습니다.

그러나 프로젝트 컴파일 및 테스트 실행 jar 파일 groovy all jar, junit and testng jar은 루트 레벨 저장소에서 찾을 수 있습니다.

그리고 또 다른 한가지는 , maven { url("https://plugins.gradle.org/m2/") }일부는 두 블록에서 사용할 수 있습니다. 그것들은 다른 의존성에 사용되기 때문입니다.

리소스 링크 : 빌드 스크립트 클로저와 코어 내의 종속성의 차이점


12

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.