Gradle buildscript dependencies


176

Qual é a diferença entre declarar repositórios na buildScriptseção da compilação gradle ou no nível raiz da compilação.

Opção 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

ou

build.gradle :

repositories {
    mavenCentral();
}

Respostas:


165

Os repositórios no bloco buildScript são usados ​​para buscar as dependências de suas dependências buildScript. Essas são as dependências colocadas no caminho de classe da sua compilação e as quais você pode consultar no seu arquivo de compilação. Por exemplo, plugins extras que existem na internet.

Os repositórios no nível raiz são usados ​​para buscar as dependências das quais seu projeto depende. Portanto, todas as dependências necessárias para compilar seu projeto.


19
Se eu precisar do maven central para meu buildscript e meu projeto, preciso declará-lo duas vezes?
Marcin Koziński

18
Sim, você precisa especificá-lo duas vezes e, de fato.
Hiery Nomus 4/03/2014

Como exemplo disso, o plug-in Spring propdeps pode ser adicionado ao buildscript para ativar palavras-chave "fornecidas" e "opcionais" para dependências, além das palavras-chave comuns "compilar" e "testCompile". Nota: O plug-in war já oferece a palavra-chave "fornecida", você só precisa de propdeps para projetos jar que serão implementados dentro de uma guerra.
Powerlord 24/09/15

14

Eu quero lhe dar uma concepção clara. Por esse motivo, estou anexando o código de captura instantânea build.grade para melhor entendimento.

dependências buildscript:

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'
    }
}

nível raiz / dependências principais:

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'
}

Então, primeiro eu quero esclarecer em uma única palavra que

i) o arquivo jar das dependências do buildscript será baixado dos repositórios do buildscript. [Dependência externa do projeto]

ii) o arquivo jar das dependências no nível raiz será baixado dos repositórios no nível raiz. [Para dependência do projeto]

Aqui,

O bloco "buildscript" controla apenas dependências para o próprio processo buildscript, não para o código do aplicativo. Como vários plugins gradle como gradle-cobertura-plugin, gradle-lint-pluginsão encontrados em repositórios buildscript. Esses plug-ins não seriam referenciados como dependências para o código do aplicativo.

Mas para a compilação do projeto e o teste de execução de arquivos jar como groovy all jar, junit and testng jarserão encontrados nos repositórios no nível raiz.

E outra coisa , maven { url("https://plugins.gradle.org/m2/") }parte pode ser usada nos dois blocos. Porque eles são usados ​​para diferentes dependências.

Link do recurso: Diferença entre dependências no fechamento do buildscript e no núcleo


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.