Você está na página 1de 10

28/8/2014

Captulo 1 Ol, Gradle!

Anterior

ndice

Prxima

Captulo 1 Ol, Gradle!


Ant e Maven ocuparam posies opostas sobre a continuidade de construo, para o
benefcio e em detrimento de seus usurios ao longo da ltima dcada. Ant escolhe para
oferecer extrema flexibilidade para o usurio, impondo nenhum convenes qualquer, e no
querendo impor qualquer infra-estrutura de gerenciamento de dependncia pesado na
construo. Apache Ivy mais tarde acrescentou gerenciamento de dependncia mal
necessrio para Java constri, mas ainda no abordou a falta de convenes inerentes Ant.
Maven, por outro lado, ofereceu rgidos padres e suporte para gerenciamento de
dependncia, mas seus padres eram muitas vezes arrogante, e desviando-os muitas vezes
provou ser mais difcil do que o esperado.
Ant e Maven ter compartilhado um sucesso considervel no mercado de Java, apesar de
importantes deficincias em ambas as ferramentas. Por um lado, Gradle apresenta-se como
um meio termo razovel entre os dois extremos, oferecendo convenes pensadas para a
sua construo a seguir, e tornando mais fcil para voc estender ou redefinir essas
convenes quando quiser. Gradle fornece out-of-the-box convenes de construo e, ao
mesmo tempo percebe que h um conjunto de normas pode refletir com preciso cada
compilao. Portanto Gradle pretende ser um meio de desenvolvimento de normas de
construo organizao- e especficas do projeto. melhor pensar no como um conjunto de
opinies sobre as normas de construo, mas como um conjunto de ferramentas para
desenvolver e estender essas normas com uma linguagem descritiva rico.
Gradle tambm oferece opes na forma como ele lida com dependncias de construo. Se
idioma do seu projeto declarar algumas dependncias de nvel superior pelo nome e deixe
a sua ferramenta de construo determinar o que as outras bibliotecas devem estar
presentes para apoiar suas dependncias declaradas ("gesto dependncia transitiva"),
Gradle vai deixar voc fazer isso, a interface com ambos Maven e Ivy repositrios. Se voc
quiser baixar os arquivos JAR e gerenciar dependncias de mo em um diretrio do projeto
local, Gradle no ir sancion-lo de qualquer forma. Ambas as abordagens so opes de
primeira classe. Esta flexibilidade importante em muitos casos, mas especialmente Ao
migrar constri a Gradle: independentemente dos pareceres da construo legado de
gerenciamento de dependncia, Gradle no vai se opor a eles.
Gradle rico em recursos, mas no um quadro to teimoso que ele vai lutar com voc
quando voc quer fazer as coisas sua prpria maneira. Dispe de convenes para aqueles
que os querem, flexibilidade para aqueles que precisam dela, e um kit de ferramentas para
transformar essa flexibilidade nas normas de construo especficas de domnio que voc
pode escrever em seu prprio pas. Alm de sua posio diferenciada no continuum
conveno / configurao, oferece nenhuma escassez de recursos teis, de alta
produtividade ausente de outras ferramentas de compilao. Vamos explorar estes juntos ao
longo do livro.

1.1. Criar arquivos em Groovy


Um arquivo de construo potencialmente complexa exige um formato expressivo. XML foi
uma escolha fcil para uma ferramenta de construo de uma dcada atrs, quando era
uma nova tecnologia, os desenvolvedores estavam entusiasmados com ele, e ningum ainda
http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

1/10

28/8/2014

Captulo 1 Ol, Gradle!

sabia a dor de l-lo em grandes quantidades. Parecia ser legvel, e foi muito fcil de escrever
cdigo para analis-lo. No entanto, uma dcada de experincia tem demonstrado que os
arquivos XML grandes e complexos so apenas fcil para mquinas para ler, no para os
seres humanos. Alm disso, a estrutura estritamente hierrquica do XML limita a
expressividade do formato. fcil mostrar as relaes de nidificao em XML, mas difcil
de expressar o fluxo do programa e acessar os dados da maneira expresses de linguagem
de programao mais comum express-las. Em ltima anlise, o XML o formato errado
para um arquivo de construo.
Gradle expressa seus arquivos de compilao em Groovy. Groovy uma linguagem dinmica
da JVM, similar em muitos aspectos ao Java, mas com algumas diferenas importantes. Cada
arquivo Gradle construir um script Groovy executvel. Como Gradle usurio comeo, voc
nem precisa estar ciente de que voc est escrevendo cdigo Groovy, mas que as suas
necessidades se tornam mais sofisticados, o poder da linguagem Groovy pode tornar-se
muito importante. Ao contrrio dos formatos de Ant e Maven arquivo de construo, arquivos
de construo baseados em Groovy do gradle permitem que voc faa tarefas de
programao de propsito geral em seu arquivo de configurao. Isso alivia muito dos
desenvolvedores frustrao enfrentaram na falta de controle de fluxo em Formiga ou ser
forado a plug-in de desenvolvimento em Maven para realizar tarefas fora do padro.

1.2. -Domnio especfico construir linguagens


Todo desenvolvedor manter uma construo complexa quis, em algum momento de
escrever um pouco de cdigo no arquivo de construo. s vezes voc s precisa de uma
iterao, e outras vezes voc gostaria de expressar uma condicional moderadamente
complexo, sem recorrer a uma cirurgia arquivo de construo. Mas a habilidade ilimitada
para codificar o seu caminho atravs de uma construo complexa uma coisa boa? Pode
abrir amplas novas perspectivas de flexibilidade, mas o resultado pode vir a ser uma
catstrofe de manuteno. Como os arquivos gradle construir so scripts Groovy, Gradle dlhe a opo de entrar em modo de script em qualquer ponto de sua construo, mas fazer
isso em excesso geralmente no incentivada.
Em vez disso, Gradle pretende apresentar o usurio no com a mera Groovy, mas com uma
linguagem de domnio especfico (DSL) adaptado para a tarefa de construir cdigo. Um
usurio Gradle poderia aprender esta lngua, no tendo anteriormente conhecido Groovy, e
usar Gradle eficaz. Este DSL descreve a construo usando termos apropriados para a tarefa
de construir software, no necessariamente para programao de propsito geral.
Codificao de uso geral est sempre disponvel como uma alternativa, mas Gradle cutuca
gentilmente o usurio para a utilizao de expresses idiomticas do seu DSL primeiro,
segundo e codificao.
Quando o padro Gradle DSL no tem a linguagem para descrever o que voc quer a sua
construo a fazer, voc pode estender o DSL atravs de plug-ins. Por exemplo, Gradle fora
da caixa contm a linguagem necessria para descrever como compilar o cdigo Java e criar
um arquivo WAR a partir da sada. No entanto, ele no contm a linguagem necessria para
executar scripts de migrao de banco de dados ou implementar cdigo para um conjunto
de servidores de controle de qualidade com base na nuvem. Atravs Gradle plug-ins, voc
pode adicionar novas definies de tarefas, alterar o comportamento de tarefas existentes,
adicionar novos objetos, alm de criar novas palavras-chave para descrever as tarefas que
se afastam das categorias gradle padro. Mesmo atravs do mecanismo simples de uma
tarefa Gradle personalizado, voc pode introduzir pequenos pedaos de construir
vocabulrio, transformando um pedao de outra forma indesejvel de cdigo imperativo em
uma declarao limpo.

http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

2/10

28/8/2014

Captulo 1 Ol, Gradle!

Se voc est vindo do Maven, o seu entendimento de um plug-in pode ser bastante diferente
do plug-in conceito de Gradle. No Maven, um plug-in uma forma de estender a ferramenta
com uma ao particular, de gro fino a ser realizada durante a sua construo, muitas
vezes associada a uma ou mais fases do ciclo de vida em modelo elaborado do Maven. Em
Gradle, um plug-in pode proporcionar aes de construo configurveis
atravs da
introduo de uma ou mais tarefas, mas fundamentalmente uma forma de estender o DSL
de compilao para incluir o domnio abrangido pelo plug-in.
Usando e prorroga o Gradle DSL so geralmente prefervel escrever cdigo em seu arquivo
de configurao. Enquanto voc est sempre livre para resolver problemas de uma forma
otimizada localmente escrevendo cdigo Groovy dentro de sua construo, o mais
sustentvel constri acabar refatorar este cdigo em plug-ins organizados que expem
novas expresses idiomticas da lngua de construo para os arquivos de compilao que
os utilizam. Assim, voc pode expressar as atividades de sua construo em um alto nvel, a
linguagem declarativa que significativo em seu domnio de negcio e tecnologia.

1.3. Comeando
Gradle fcil de instalar. Para todas as plataformas, o procedimento o seguinte:
Visite http://gradle.org/downloads.html e baixar a verso atual
Descompacte o arquivo baixado em um diretrio de sua escolha
Adicione a varivel de ambiente GRADLE_HOME, apontando para o diretrio de
instalao (isto opcional, mas faz o passo seguinte mais fcil)
Adicionar $ GRADLE_HOME / binpara o caminho

1.3.1. MacOS Instalao com Brew


Gradle mantido no MacOS gerente suportada pela comunidade pacote, Homebrew ., ou
"brew" para breve Para instalar Gradle usando bebida, basta digitar o seguinte em uma
janela de terminal:
$ Sudo bebida instalar gradle
Brew ir instalar e construir as dependncias, em seguida, coloque o executvel Gradle em
seu caminho.

1.3.2. Linux e MacOS Instalao


Para instalar Gradle em sistemas operacionais * nix, como Linux e MacOS, siga este script de
linha de comando:
$ Wget http://repo.gradle.org/gradle/distributions/gradle-1.0-bin.zip
--2011-03-18 10: 58: 46-- http://repo.gradle.org/gradle/distributions/
gradle-1.0-bin.zip
Resolvendo repo.gradle.org ... 50.16.203.43
Conectando-se a gradle.artifactoryonline.com | 50.16.203.43 |: 80 ... conectado.
HTTP requisio enviada, aguardando resposta ... 200 OK
Comprimento: 26899590 (26M) [application / zip]
Salvando em: `gradle-1.0-bin.zip '
100% [=============================================== ==============>]
26899590 171K / s em 2m 56s
2011-03-18 11:01:42 (149 KB / s) - `gradle-1.0-bin.zip 'salvou [26899590/26899590]
$ Sudo unzip-q gradle-1.0-bin.zip d / usr / local /
http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

3/10

28/8/2014

Captulo 1 Ol, Gradle!

$ Echo "GRADLE_HOME exportao = / usr / / gradle-1.0 local" >> .profile


$ Echo "export PATH = $ PATH: $ GRADLE_HOME / bin" >> .profile

Voc tambm pode baixar a distribuio Gradle diretamente do site da Gradle e


descompacte o arquivo. Alm disso, voc pode preferir um outro mecanismo de
definio de variveis
de ambiente em sua instalao. Sinta-se livre para usar o que
funciona para voc.

1.3.3. Instalao do Windows


Para instalar Gradle no Windows, faa o seguinte:
Baixe o arquivo ZIP Gradle do site da Gradle e clique duas vezes sobre ele para
descompactar. Arraste a pasta para um local de sua escolha. Neste exemplo, vamos
supor que voc coloc-lo em C: \ gradle-1.0 .
Em seguida, clique com o boto direito do mouse no cone Meu Computador e selecione
Propriedades.
Na janela do Painel de Controle do Sistema, selecione Configuraes avanadas do
sistema a partir dos links do lado esquerdo.
Na caixa de dilogo Configuraes avanadas do sistema ( Figura 1.1, "dilogo
Configuraes do sistema avanadas do Windows" ), clique no boto Variveis
de
ambiente.
Figura 1.1. De dilogo Configuraes avanadas do sistema do Windows

As imagens mostradas aqui so tomadas a partir do Windows 7 SP1. Sua verso do


Windows pode variar.

http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

4/10

28/8/2014

Captulo 1 Ol, Gradle!

Na caixa de dilogo Variveis


de Ambiente, clique no boto Novo em Variveis
do
sistema ( Figura 1.2, "Adicionando a varivel de ambiente GRADLE_HOME" ). Nomeie a
varivel de ambiente GRADLE_HOME, e dar-lhe o valor C: \ gradle-1.0. (Se voc
descompactou Gradle em um diretrio diferente, coloque esse diretrio aqui.)
Figura 1.2. Adicionando a varivel de ambiente GRADLE_HOME

Na mesma caixa de dilogo, selecione a varivel Path em Variveis


do sistema ( Figura
1.3, "Editando o caminho" ), clique em Editar. Adicione o texto
;% GRADLE_HOME% \ binao final do valor da varivel Path.
Figura 1.3. Editando o caminho

http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

5/10

28/8/2014

Captulo 1 Ol, Gradle!

1.4. A construo do Arquivo Ol Mundo


Agora que temos Gradle instalado, podemos comear a us-lo. Vamos criar o arquivo mais
simples compilao que nos for possvel para ter uma idia dos princpios.
Salvo disposio em contrrio, todos os exemplos deste livro vai assumir que voc est
executando Gradle a partir da linha de comando. Consulte os procedimentos de
instalao na Seo 1.3, "Introduo" de ajuda para comear.
Crie um arquivo chamado build.gradleque parece Exemplo 1.1, "Ol Mundo construir
arquivo" .
Exemplo 1.1. Ol arquivo de construo Mundial
tarefa helloWorld << {
println "Ol, mundo"
}

Voc ver a seguinte sada como resultado do Ol Mundo compilao:


$ Gradle helloWorld -q
Ol, mundo
Note que o arquivo de construo no obrigado a incluir qualquer coisa, e no depende de
quaisquer dependncias externas. Tambm no faz muito, que no imprimir uma
mensagem. Antes de passarmos para a construo de um cdigo Java, vamos tentar mais
um exemplo. Desta vez, vamos usar duas tarefas alm de uma dependncia para obter o
mesmo trabalho feito ( Exemplo 1.2, "Ol Mundo em duas tarefas" ).
http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

6/10

28/8/2014

Captulo 1 Ol, Gradle!

Exemplo 1.2. Ol Mundo em duas tarefas


tarefa Ol << {
imprimir "Ol"
}
mundo tarefa (dependson: Ol) << {
println 'mundo'
}

Para executar esta compilao, que executar a tarefa em segundo, mundo. Ele produz uma
sada muito semelhante ao primeiro:
$ Gradle mundo q
Ol, mundo

1.5. Construo de um programa Java


Naturalmente, o exemplo Ol Mundo maquinado; ningum quer realmente executar uma
compilao que apenas imprime mensagens para o console. Vamos dar uma olhada em
como pode ser fcil de construir cdigo Java. No esprito desta introduo, vamos torn-lo
um programa Java muito simples, s para mostrar como simples Gradle pode fazer uma
compilao se voc est confortvel na sequncia das suas convenes.
O arquivo de construo parece como mostrado na Exemplo 1.3, "O mais simples possvel
Gradle Construir Arquivo para Java" .
Exemplo 1.3. O mais simples possvel construir Arquivo Gradle para Java
aplicar plugin: 'java'

O cdigo-fonte olha como mostrado na Exemplo 1.4, "Ol Mundo em Java" .


Exemplo 1.4. Ol Mundo em Java
pacote org.gradle.example.simple;
public class HelloWorld {
void main (String args []) {public static
System.out.println ("Ol, mundo");
}
}

importante ressaltar que o layout do diretrio do projeto parece como mostrado na


Exemplo 1.5, "Layout do Projeto de Ol Mundo Java" .
Exemplo 1.5. Layout do projeto de Ol Mundo Java
.
build.gradle
src
principal
java
org
gradle
exemplo
http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

7/10

28/8/2014

Captulo 1 Ol, Gradle!

simples
HelloWorld.java

Este arquivo de construo apresenta automaticamente uma srie de tarefas para ns a


correr. Basta executar construo gradle, e voc ver a sada mostrada na Exemplo 1.6,
"Projeto de Layout de Ol Mundo Java aps criar" .
Exemplo 1.6. Projeto de Layout de Ol Mundo Java aps criar
.
construir
aulas
principal
org
gradle
exemplo
simples
HelloWorld.class
dependncia-cache
libs
minimal-java-build-file.jar
relatrios
testes
css3-pie-1.0beta3.htc
index.html
report.js
style.css
-teste resultados
build.gradle
gerncia example.bsh
src
principal
java
org
gradle
exemplo
simples
HelloWorld.java

Observe no apenas que o cdigo Java foi compilado e seu arquivo de classe colocado em
um diretrio que no tem que configurar, mas tambm que os arquivos de relatrio de teste
foram gerados (pronto para receber os resultados dos testes de unidade real quando
escrevemos testes mais tarde), e um JAR foi construdo utilizando o nome do diretrio do
projeto como o nome do arquivo. Isso tudo resultado das convenes do Java plug-in do
Gradle. Ns no temos que fazer uma nica deciso ou escrever uma linha de configurao.
E que no preciso dizer que podemos executar nossa aplicao Java nascente, como
mostrado na Exemplo 1.7, "Executando Ol Mundo Java" .
Exemplo 1.7. Correndo Ol Mundo Java
$ Java-cp construir / classes / main / org.gradle.example.simple.HelloWorld
Ol, mundo

H uma histria muito mais para contar sobre o plug-in Java, que ser abordado em um
volume separado. Se voc quer comear agora, voc tambm deve verificar se a
documentao on-line .
Se voc tivesse que escrever um arquivo de construo do mundo real para criar e
http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

8/10

28/8/2014

Captulo 1 Ol, Gradle!

executar um programa Java, voc iria querer usar o aplicativo plug-in, que um plug-in
do ncleo disponveis em cada instalao de Gradle.

1.6. A linha de comando Gradle


Os exemplos anteriores mostraram Gradle correr a partir da linha de comando, ea maioria
deste livro vai continuar esse padro. Gradle foi concebido para apoiar a integrao IDE de
primeira classe em um nvel de arquitetura de profundidade, mas a linha de comando tudo
menos um cidado de segunda classe. Neste livro, vamos trabalhar principalmente a partir
da linha de comando.
No vamos passar por cima de todas as opes de linha de comando possveis, mas aqui
est o que voc precisa para ser produtivo imediatamente:
helpou -h
Imprime as mensagens de ajuda que descrevem todas as opes de linha de comando.
-Dproperty = Valor
Define uma propriedade do sistema. Este um mecanismo til para passar parmetros
para uma compilao a partir da linha de comando. Exemplo:
-Dcustom.config = meu-config.properties.
--infoou -i
Define o nvel de log Gradle a INFO, o que faz com que algumas mensagens mais
informativas a ser emitidos durante a configurao padro.
--debugou -d
Acontece que o log de depurao para a construo, incluindo rastreios de pilha. Isso
gera uma grande quantidade de sada, mas pode ser bastante til para os problemas
de construo resoluo de problemas.
--dry-runou -m
Avalia e executa o arquivo de construo, mas no executa todas as aes da tarefa.
--quietou q
Suprime mais sada, mostrando somente mensagens de erro.
--gui
Inicia o GUI Gradle.
--stacktraceou -s
Emite um rastreamento de pilha abreviado quando uma exceo lanada pela
compilao. Normalmente, trace logging pilha suprimida, por isso este um
interruptor til ao depurar uma compilao interrompida. O rastreamento de pilha
abreviado, removendo quadros relacionados a chamadas de mtodo Groovy puramente
internas.
--full-stacktraceou S
Emite uma verso mais longa do --stacktracesada, incluindo todas as chamadas de
mtodo Groovy internos. Estes geralmente no so de interesse para o desenvolvedor
de construo.
Propriedades
Emite todas as propriedades do objeto de construo do projeto. O objeto do projeto
um objeto que representa a estrutura eo estado da construo atual.

http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

9/10

28/8/2014

Captulo 1 Ol, Gradle!

tarefas
Emite uma lista de todas as tarefas disponveis no arquivo de configurao atual. Note
que os plug-ins podem introduzir tarefas prprias, por isso esta lista pode ser maior do
que as tarefas que voc definiu.

Anterior

http://www.gradleware.com/registered/books/building-and-testing/hello-gradle.html

ndice

Prxima

10/10

Você também pode gostar