Eu sou novo no Gradle e estou lendo a documentação, mas não entendo algumas partes dela. Uma dessas partes está conectada com o buildscript
bloco. Qual é seu propósito?
Se o script de construção precisar usar bibliotecas externas, você poderá adicioná-las ao caminho de classe do script no próprio script de construção. Você faz isso usando o método buildscript (), passando um fechamento que declara o caminho de classe do script de construção.
buildscript { repositories { mavenCentral() } dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' } }
Ok, mas qual é a diferença com:
repositories {
mavenCentral()
}
dependencies {
compile group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
Por exemplo, por que é necessário usar buildscript
?
Respostas:
O
buildScript
bloco determina quais plug-ins, classes de tarefas e outras classes estão disponíveis para uso no restante do script de construção . Sem umbuildScript
bloco, você pode usar tudo o que é fornecido com o Gradle pronto para uso. Se você deseja usar adicionalmente plug-ins de terceiros, classes de tarefas ou outras classes (no script de construção!), Você deve especificar as dependências correspondentes nobuildScript
bloco.fonte
sample.infotask', name: 'infotask', version: '1.0'
E use a tarefa _uploadArchives para enviá-la para repositório local ../lib ' Em outro projeto, se eu usar minha tarefa, devo escrever: `buildscript {repositórios {arquivo maven {url': ../ lib '}} dependências {classpath group:' sample.infotask ', nome:' infotask ', versão:' 1.0 '}} Estou certo? Por que devemos usar o bloco buildScript ? Quando carrego artefato local, tenho o jar na minha máquina. E só tenho que dizer a Gradle de onde e o que colocar no meu caminho de classe, mais nada, qual é o especial aqui?buildScript
bloco, porque Gradle precisa dessas informações para entender o restante do script de construção . É por isso que você precisa fornecer essas informações em um canal separado (obuildScript
bloco). Tecnicamente falando, Gradle precisa dessas informações para compilar e avaliar o restante do script de construção. O que acontece sob o capô é que Gradle separa o script de construção em dois scripts (obuildScript
bloco e tudo o mais) para que possa processá-los separadamente.dependencies
e asrepositories
seções listam as dependências necessárias para criar e executar sua fonte, etc.buildscript
é para obuild.gradle
próprio arquivo. Portanto, isso conteria dependências para, por exemplo, a criação de RPMsDockerfile
e quaisquer outras dependências para executar as tarefas em todos os dependentes.build.gradle
fonte
buildscript
é simplesmente a dependência para o seu script de construçãoAgradeço a resposta de Peter ... mas não foi imediatamente óbvio para mim o que o restante do script de construção quis dizer com ênfase na resposta e na documentação.
Normalmente, trazer funcionalidade dependente é para uso no programa Java ou qualquer outro programa que você possa estar escrevendo. Trazendo Spring dizer, não é para ser usado no script de construção, mas no programa Java. Colocá-lo no
buildscript
fechamento garante que as dependências estejam disponíveis para uso na própria construção do gradle. Não é o programa de saída.fonte
A seção de configuração "buildscript" é para o próprio gradle (ou seja, altera a forma como o gradle é capaz de executar a construção). Portanto, esta seção geralmente inclui o plug-in Android Gradle.
fonte
É um pouco alto, mas a esperança ajuda.
Para mim, uma distinção clara começou a se formar quando eu comecei a entender o que é um componente básico , método e tarefa. Como é a sintaxe, como você pode configurá-los, etc. Então, sugiro que você analise tudo isso. Depois disso, você pode começar a entender essa sintaxe.
Então é muito importante saber qual é o tipo do objeto build.gradle (uma instância da classe Project) para saber o que você pode ter dentro de um arquivo build.gradle. Isso responderia de onde vêm esses 'buildScript' e outros. E para ampliar suas capacidades / recursos (digamos, android), veja como os plug-ins podem ajudar.
Por último, mas não menos importante, há um tutorial muito bom aqui que fala sobre fechamentos, delegados, que são os conceitos essenciais para entender o script.
fonte
Um pouco mais de explicação ao demonstrar o arquivo gradle de nível superior do Android.
arquivo gradle no nível do módulo
O que é "plugin"? São apenas classes java, que implementam a interface Plugin. Sob a interface, ele possui um método "aplicar" para adicionar vários objetos de tarefas com nomes diferentes. Task é uma classe em que podemos implementar o fluxo de trabalho. Por exemplo, a tarefa de compilação consiste no fluxo de criação do aplicativo.
Então, o que o buildscript faz? Ele define onde encontrar os plugins. O que o plugin faz? Abrange várias tarefas. O que a tarefa faz? Ele nos fornece a compilação, instalação, fiapos etc.
Meu entendimento pode estar errado. Por favor, não hesite em me corrigir se achar que algo é enganoso.
fonte