Gradle - construir script
O Gradle cria um arquivo de script para lidar com duas coisas; um éprojects e outro é tasks. Cada compilação do Gradle representa um ou mais projetos. Um projeto representa um JAR de biblioteca ou um aplicativo da web ou pode representar um ZIP montado a partir dos JARs produzidos por outros projetos. Em palavras simples, um projeto é composto por diferentes tarefas. Uma tarefa significa uma parte do trabalho que uma construção executa. Uma tarefa pode ser compilar algumas classes, criar um JAR, gerar Javadoc ou publicar alguns arquivos em um repositório.
Gradle usa Groovy language para escrever scripts.
Escrevendo script de construção
O Gradle fornece uma linguagem específica de domínio (DSL), para descrever compilações. Isso usa a linguagem Groovy para facilitar a descrição de uma construção. Cada script de construção do Gradle é codificado usando UTF-8, salvo offline e nomeado como build.gradle.
build.gradle
Estamos descrevendo tarefas e projetos usando um script Groovy. Você pode executar uma compilação do Gradle usando o comando Gradle. Este comando procura por um arquivo chamadobuild.gradle. Dê uma olhada no exemplo a seguir, que representa um pequeno script que imprimetutorialspoint. Copie e salve o seguinte script em um arquivo chamadobuild.gradle. Este script de construção define um nome de tarefa hello, que é usado para imprimir a string tutorialspoint.
task hello {
doLast {
println 'tutorialspoint'
}
}
Execute o seguinte comando no prompt de comando. Ele executa o script acima. Você deve executar isso, onde o arquivo build.gradle está armazenado.
C:\> gradle –q hello
Resultado:
tutorialspoint
Se você acha que a tarefa funciona de maneira semelhante ao alvo ANT, então está certo - a tarefa Gradle é equivalente ao alvo ANT.
Você pode simplificar esta tarefa de olá especificando um atalho (representa um símbolo <<) ao doLastdeclaração. Se você adicionar este atalho à tarefa acimahello será semelhante ao seguinte script.
task hello << {
println 'tutorialspoint'
}
Como acima, você pode executar o script acima usando gradle –q hello comando.
O script Grade usa principalmente dois objetos reais, um é o objeto de projeto e outro é o objeto de script.
Project Object- Cada script descreve sobre um ou vários projetos. Enquanto na execução, este script configura o objeto do projeto. Você pode chamar alguns métodos e usar propriedade em seu script de construção que são delegados ao Objeto do Projeto.
Script Object- Gradle leva o código de script em classes que implementam a Interface de Script e, em seguida, executa. Isso significa que todas as propriedades e métodos declarados pela interface do script estão disponíveis em seu script.
A tabela a seguir define a lista de standard project properties. Todas essas propriedades estão disponíveis em seu script de construção.
Sr. Não. | Nome | Tipo | Valor padrão |
---|---|---|---|
1 | projeto | Projeto | A instância do projeto |
2 | nome | Corda | O nome do diretório do projeto. |
3 | caminho | Corda | O caminho absoluto do projeto. |
4 | descrição | Corda | Uma descrição do projeto. |
5 | projectDir | Arquivo | O diretório que contém o script de construção. |
6 | buildDir | Arquivo | projectDir / build |
7 | grupo | Objeto | Não especificado |
8 | versão | Objeto | Não especificado |
9 | formiga | AntBuilder | Uma instância AntBuilder |
Noções básicas do Groovy
Os scripts de compilação do Gradle usam a API Groovy completa. Como uma startup, dê uma olhada nos exemplos a seguir.
O exemplo a seguir explica como converter uma string em maiúsculas.
Copie e salve o código fornecido abaixo em build.gradle Arquivo.
task upper << {
String expString = 'TUTORIALS point'
println "Original: " + expString
println "Upper case: " + expString.toUpperCase()
}
Execute o seguinte comando no prompt de comando. Ele executa o script fornecido acima. Você deve executar isso, onde o arquivo build.gradle está armazenado.
C:\> gradle –q upper
Resultado:
Original: TUTORIALS point
Upper case: TUTORIALS POINT
O exemplo a seguir explica como imprimir o valor de um parâmetro implícito ($ it) por 4 vezes.
Copie e salve o seguinte código em build.gradle Arquivo.
task count << {
4.times {
print "$it "
}
}
Execute o seguinte comando no prompt de comando. Ele executa o script fornecido acima. Você deve executar isso, onde o arquivo build.gradle está armazenado.
$ gradle –q count
Resultado:
0 1 2 3
A linguagem Groovy oferece muitos recursos, alguns recursos importantes são discutidos a seguir.
Métodos JDK Groovy
O Groovy adiciona muitos métodos úteis às classes Java padrão. Por exemplo, a API Iterable do JDK implementa umeach() método que itera sobre os elementos da Interface Iterável.
Copie e salve o seguinte código em build.gradle Arquivo.
task groovyJDK << {
String myName = "Marc";
myName.each() {
println "${it}"
};
}
Execute o seguinte comando no prompt de comando. Ele executa o script fornecido acima. Você deve executar isso, onde o arquivo build.gradle é armazenado.
C:\> gradle –q groovyJDK
Resultado:
M
a
r
c
Acessores de propriedade
Você pode acessar automaticamente os métodos getter e setter apropriados de uma propriedade específica, especificando sua referência.
O snippet a seguir define as sintaxes dos métodos getter e setter de uma propriedade buildDir.
// Using a getter method
println project.buildDir
println getProject().getBuildDir()
// Using a setter method
project.buildDir = 'target'
getProject().setBuildDir('target')
Parênteses opcionais em chamadas de método
Groovy contém um recurso especial na chamada de métodos, que são os parênteses opcionais para a chamada de método. Esse recurso se aplica a scripts do Gradle também.
Dê uma olhada na seguinte sintaxe. Isso define uma chamada de métodosystemProperty do test objeto.
test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')
Fechamento como o último parâmetro do método
O Gradle DSL usa fechos em muitos lugares. Onde o último parâmetro de um método é um encerramento, você pode colocar o encerramento após a chamada do método.
O fragmento a seguir define a sintaxe que Closures usa como parâmetros de método repositories ().
repositories {
println "in a closure"
}
repositories() {
println "in a closure"
}
repositories({ println "in a closure" })
Importações padrão
O Gradle adiciona automaticamente um conjunto de instruções de importação aos scripts do Gradle. A lista a seguir mostra os pacotes de importação padrão para o script Gradle.
import org.gradle.*
import org.gradle.api.*
import org.gradle.api.artifacts.*
import org.gradle.api.artifacts.cache.*
import org.gradle.api.artifacts.component.*
import org.gradle.api.artifacts.dsl.*
import org.gradle.api.artifacts.ivy.*
import org.gradle.api.artifacts.maven.*
import org.gradle.api.artifacts.query.*
import org.gradle.api.artifacts.repositories.*
import org.gradle.api.artifacts.result.*
import org.gradle.api.component.*
import org.gradle.api.credentials.*
import org.gradle.api.distribution.*
import org.gradle.api.distribution.plugins.*
import org.gradle.api.dsl.*
import org.gradle.api.execution.*
import org.gradle.api.file.*
import org.gradle.api.initialization.*
import org.gradle.api.initialization.dsl.*
import org.gradle.api.invocation.*
import org.gradle.api.java.archives.*
import org.gradle.api.logging.*
import org.gradle.api.plugins.*
import org.gradle.api.plugins.announce.*
import org.gradle.api.plugins.antlr.*
import org.gradle.api.plugins.buildcomparison.gradle.*
import org.gradle.api.plugins.jetty.*
import org.gradle.api.plugins.osgi.*
import org.gradle.api.plugins.quality.*
import org.gradle.api.plugins.scala.*
import org.gradle.api.plugins.sonar.*
import org.gradle.api.plugins.sonar.model.*
import org.gradle.api.publish.*
import org.gradle.api.publish.ivy.*
import org.gradle.api.publish.ivy.plugins.*
import org.gradle.api.publish.ivy.tasks.*
import org.gradle.api.publish.maven.*
import org.gradle.api.publish.maven.plugins.*
import org.gradle.api.publish.maven.tasks.*
import org.gradle.api.publish.plugins.*
import org.gradle.api.reporting.*
import org.gradle.api.reporting.components.*
import org.gradle.api.reporting.dependencies.*
import org.gradle.api.reporting.model.*
import org.gradle.api.reporting.plugins.*
import org.gradle.api.resources.*
import org.gradle.api.specs.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.ant.*
import org.gradle.api.tasks.application.*
import org.gradle.api.tasks.bundling.*
import org.gradle.api.tasks.compile.*
import org.gradle.api.tasks.diagnostics.*
import org.gradle.api.tasks.incremental.*
import org.gradle.api.tasks.javadoc.*
import org.gradle.api.tasks.scala.*
import org.gradle.api.tasks.testing.*
import org.gradle.api.tasks.testing.junit.*
import org.gradle.api.tasks.testing.testng.*
import org.gradle.api.tasks.util.*
import org.gradle.api.tasks.wrapper.*
import org.gradle.authentication.*
import org.gradle.authentication.http.*
import org.gradle.buildinit.plugins.*
import org.gradle.buildinit.tasks.*
import org.gradle.external.javadoc.*
import org.gradle.ide.cdt.*
import org.gradle.ide.cdt.tasks.*
import org.gradle.ide.visualstudio.*
import org.gradle.ide.visualstudio.plugins.*
import org.gradle.ide.visualstudio.tasks.*
import org.gradle.ivy.*
import org.gradle.jvm.*
import org.gradle.jvm.application.scripts.*
import org.gradle.jvm.application.tasks.*
import org.gradle.jvm.platform.*
import org.gradle.jvm.plugins.*
import org.gradle.jvm.tasks.*
import org.gradle.jvm.tasks.api.*
import org.gradle.jvm.test.*
import org.gradle.jvm.toolchain.*
import org.gradle.language.assembler.*
import org.gradle.language.assembler.plugins.*
import org.gradle.language.assembler.tasks.*
import org.gradle.language.base.*
import org.gradle.language.base.artifact.*
import org.gradle.language.base.plugins.*
import org.gradle.language.base.sources.*
import org.gradle.language.c.*
import org.gradle.language.c.plugins.*
import org.gradle.language.c.tasks.*
import org.gradle.language.coffeescript.*
import org.gradle.language.cpp.*
import org.gradle.language.cpp.plugins.*
import org.gradle.language.cpp.tasks.*
import org.gradle.language.java.*
import org.gradle.language.java.artifact.*
import org.gradle.language.java.plugins.*
import org.gradle.language.java.tasks.*
import org.gradle.language.javascript.*
import org.gradle.language.jvm.*
import org.gradle.language.jvm.plugins.*
import org.gradle.language.jvm.tasks.*
import org.gradle.language.nativeplatform.*
import org.gradle.language.nativeplatform.tasks.*
import org.gradle.language.objectivec.*
import org.gradle.language.objectivec.plugins.*
import org.gradle.language.objectivec.tasks.*
import org.gradle.language.objectivecpp.*
import org.gradle.language.objectivecpp.plugins.*
import org.gradle.language.objectivecpp.tasks.*
import org.gradle.language.rc.*
import org.gradle.language.rc.plugins.*
import org.gradle.language.rc.tasks.*
import org.gradle.language.routes.*
import org.gradle.language.scala.*
import org.gradle.language.scala.plugins.*
import org.gradle.language.scala.tasks.*
import org.gradle.language.scala.toolchain.*
import org.gradle.language.twirl.*
import org.gradle.maven.*
import org.gradle.model.*
import org.gradle.nativeplatform.*
import org.gradle.nativeplatform.platform.*
import org.gradle.nativeplatform.plugins.*
import org.gradle.nativeplatform.tasks.*
import org.gradle.nativeplatform.test.*
import org.gradle.nativeplatform.test.cunit.*
import org.gradle.nativeplatform.test.cunit.plugins.*
import org.gradle.nativeplatform.test.cunit.tasks.*
import org.gradle.nativeplatform.test.googletest.*
import org.gradle.nativeplatform.test.googletest.plugins.*
import org.gradle.nativeplatform.test.plugins.*
import org.gradle.nativeplatform.test.tasks.*
import org.gradle.nativeplatform.toolchain.*
import org.gradle.nativeplatform.toolchain.plugins.*
import org.gradle.platform.base.*
import org.gradle.platform.base.binary
import org.gradle.platform.base.component.*
import org.gradle.platform.base.plugins.*
import org.gradle.platform.base.test.*
import org.gradle.play.*
import org.gradle.play.distribution.*
import org.gradle.play.platform.*
import org.gradle.play.plugins.*
import org.gradle.play.tasks.*
import org.gradle.play.toolchain.*
import org.gradle.plugin.use.*
import org.gradle.plugins.ear.*
import org.gradle.plugins.ear.descriptor.*
import org.gradle.plugins.ide.api.*
import org.gradle.plugins.ide.eclipse.*
import org.gradle.plugins.ide.idea.*
import org.gradle.plugins.javascript.base.*
import org.gradle.plugins.javascript.coffeescript.*
import org.gradle.plugins.javascript.envjs.*
import org.gradle.plugins.javascript.envjs.browser.*
import org.gradle.plugins.javascript.envjs.http.*
import org.gradle.plugins.javascript.envjs.http.simple.*
import org.gradle.plugins.javascript.jshint.*
import org.gradle.plugins.javascript.rhino.*
import org.gradle.plugins.javascript.rhino.worker.*
import org.gradle.plugins.signing.*
import org.gradle.plugins.signing.signatory.*
import org.gradle.plugins.signing.signatory.pgp.*
import org.gradle.plugins.signing.type.*
import org.gradle.plugins.signing.type.pgp.*
import org.gradle.process.*
import org.gradle.sonar.runner.*
import org.gradle.sonar.runner.plugins.*
import org.gradle.sonar.runner.tasks.*
import org.gradle.testing.jacoco.plugins.*
import org.gradle.testing.jacoco.tasks.*
import org.gradle.testkit.runner.*
import org.gradle.util.*