SlideShare une entreprise Scribd logo
1  sur  88
Eng. MSc. Jadson Santos
Gradle
14/01/2017 Gradle 2
• Gradle is an advanced build tool of general
purpose base on Groovy
Why use a build tool?
14/01/2017 Gradle 3
Why do not use Eclipse to build a system?
14/01/2017 Gradle 4
• You can not build automatically from everywhere
with Eclipse
• You will always need a person to build
Make
• Makefile is used to compile, linking, assembly
among other tasks such as cleaning up
temporary files, executing commands, etc.
14/01/2017 Gradle 5
Apache ANT
• The first widely build tool of the Java world
• Ant is extremely flexible and does not impose
coding conventions or directory layouts to the
Java projects
14/01/2017 Gradle 6
Apache ANT
• Example
14/01/2017 Gradle 7
Apache ANT
• Example
14/01/2017 Gradle 8
Apache ANT
• Example
14/01/2017 Gradle 9
Apache ANT
• Apache Ant cons
• Too flexible
• Write a lot of thing to do a simple build
• The projects have no a standard structure,
everyone create your own structure
14/01/2017 Gradle 10
Apache Maven
• Simple project setup that follows best practices
- get a new project or module started in
seconds
• Convention over Configuration
• Superior dependency management including
automatic updating, dependency closures (also
known as transitive dependencies)
14/01/2017 Gradle 11
Apache Maven
• Project
Structure
14/01/2017 Gradle 12
Apache Maven
• Based on the
concept of a
Project Object
Model (POM)
14/01/2017 Gradle 13
Apache Maven
• Maven has a central repository
14/01/2017 Gradle 14
http://mvnrepository.com/
Apache Maven
• Apache Maven Central Repository
14/01/2017 Gradle 15
Apache Maven
• Apache Maven Central Repository
14/01/2017 Gradle 16
Apache Maven
• Apache Maven Central Repository
14/01/2017 Gradle 17
Central Repository
Exist?
1º
2º
3º
2º / 4º
Local Repository
Apache Maven
• Apache Maven cons
• Too hard / rigid
• Use of XML in the build file
• Maven works great for 90% of the most
common things, but complicates a lot for those
10% of specifics things of your project
14/01/2017 Gradle 18
Apache Maven
• Apache Maven
cons
14/01/2017 Gradle 19
Why Gradle?
• Gradle combines good parts of both tools and
builds on top of them with DSL and other
improvements
• It has Ant’s power and flexibility
• Maven’s life-cycle and ease of use
14/01/2017 Gradle 20
Why Gradle?
14/01/2017 Gradle 21
Why Gradle?
14/01/2017 Gradle 22
Why Gradle?
14/01/2017 Gradle 23
Why Gradle?
14/01/2017 Gradle 24
• https://gradle.org/maven_vs_gradle/
Who is using Gradle?
14/01/2017 Gradle 25
Who is using Gradle?
14/01/2017 Gradle 26
Gradle Introduction
• The script of the Gradle is a groovy script with a
DSL to facilitated the tasks necessary to build
• Instead with groovy language of “fors” and “ifs”,
the Gradle DSL helps you
14/01/2017 Gradle 27
DSL = Domain Specific Language
• Small languages to solve a very specific problem
• Example: SQL
• SQL is an easer way to recovery data, instead use generic
languages:
for(int i = 0 ; i < qtdDiscente; i++){
if(discenteCollection[i].getMatricula() == 2013106430)
discentes.add(new Object[].{discenteCollection[i].getId(),
discenteCollection[i].getMatricula(),
discenteCollection[i].getAnoIngresso()});
}
return discentes;
14/01/2017 Gradle 28
Gradle DSL
• https://docs.gradle.org/current/dsl/
14/01/2017 Gradle 29
Gradle Introduction
• Gradle is composed of two concepts: Projects
and Tasks
• A Project may represent the creation of a jar or a
deploy of an application on the server. Each
project is composed of several Tasks
• Tasks represent some atomic job.
14/01/2017 Gradle 30
Gradle Introduction
• Example of a gradle task
14/01/2017 Gradle 31
Gradle Introduction
• Like ANT, it allows you to setup default tasks and
dependencies between tasks.
14/01/2017 Gradle 32
Gradle Introduction
• But will I have to go back to the ANT times and
program every step of my build?
• No! Gradle supports the notion of plugins, like Maven
14/01/2017 Gradle 33
Gradle Introduction
• Tasks of the Java Plugin
14/01/2017 Gradle 34
Gradle Introduction
• Like Maven, Gradle uses Convention over
Configuration
• Imagine… What is the Gradle project Structure?
• The same of Maven 
14/01/2017 Gradle 35
Gradle Introduction
• Dependency management is a critical feature of
every build
• Transitive dependency management
• Support for non-managed dependencies
• Support for custom dependency definitions
• Full Compatibility with Maven and Ivy
• Integration with existing dependency management
infrastructure
14/01/2017 Gradle 36
Gradle Simple Java Project
• Project Structure
14/01/2017 Gradle 37
Gradle Simple Java Project
• Project Build File
14/01/2017 Gradle 38
Apply Java Plugin
Declare the repository to
download de dependencies
Declare the dependencies
of your application
Gradle Simple Web Project
• Project Structure
14/01/2017 Gradle 39
Gradle Simple Web Project
• Project Build File
14/01/2017 Gradle 40
Apply Java and War Plugin
Declare the directory of
web application files
Gradle
• Group and Version of your application
14/01/2017 Gradle 41
Gradle
• Information about source code
14/01/2017 Gradle 42
Include source lines and
vars at the .jar generated
Gradle
• Declare others repositories
14/01/2017 Gradle 43
Gradle
• Plugins to configure your application to your
preferred IDE.
14/01/2017 Gradle 44
Gradle Eclipse Plugin
• Windows -> Eclipse Market -> Gradle ->
Buildship Gradle Integration + Minimalist
Gradle Editor
14/01/2017 Gradle 45
Gradle Eclipse Plugin
• Importing project as a Gradle Project
• Import as -> Select “Gradle Project”
14/01/2017 Gradle 46
Gradle Eclipse Plugin
• Importing project as a Gradle Project
• Select the project location
14/01/2017 Gradle 47
Gradle Eclipse Plugin
• Importing project
as a Gradle
Project
• Use the Gradle
wrapper inside de
project or select
the gradle local
instalation
14/01/2017 Gradle 48
Gradle Eclipse Plugin
• Buildship Gradle Integration plugin does not come with a
good editor
• Change the default Gradle editor
14/01/2017 Gradle 49
Gradle Eclipse Plugin
• Executing Gradle in the Eclipse
• Gradle Tasks tab -> Select the tasks -> double click in it
14/01/2017 Gradle 50
Gradle Eclipse Plugin
• Executing Gradle in the Eclipse
• Usually when you import a Java project as a Gradle Project we
have compilation errors.
• So we need to run the “eclipse” task to Gradle generate the
.classpath e .project files.
• The compilation errors will disappear
14/01/2017 Gradle 51
Gradle Multiple Projects
• Real applications usually consist in many projects
with dependences between theses projects, for
example a common project that contains common
code used by others projects
• Gradle supports this structure.
14/01/2017 Gradle 52
Gradle Multiple Projects
• Define a root project that consist of 3 projects
• app
• api
• build.gradle
• impl
• build.gradle
• common
• build.gradle
• build.gradle
• settings.gradle
14/01/2017 Gradle 53
Gradle Multiple Projects
• File settings.gradle of the root project
14/01/2017 Gradle 54
Gradle Multiple Projects
• With the buildship plugin, when you import the
root project, all subprojects are imported
14/01/2017 Gradle 55
Gradle Multiple Projects
• In the build.gradle of the root project you can
apply general configuration for all projects or all
subprojects
14/01/2017 Gradle 56
Gradle Multiple Projects
• Dependence between projects
• impl project depend of common and api project
• So you can declare theses dependence in build.gradle of impl
project
14/01/2017 Gradle 57
Gradle Multiple Projects
• Dependence between projects
• impl project depend of common and api project
• So you can declare theses dependence in build.gradle of impl
project
14/01/2017 Gradle 58
Eclipse plugin configure the projects
as dependence
Gradle Composite builds (3.3)
• “A composite build is simply a build that includes other
builds. In many ways a composite build is similar to a
Gradle multi-project build, except that instead of including
single projects, complete builds are included”.
• https://docs.gradle.org/current/userguide/composite_builds.html
14/01/2017 Gradle 59
Gradle Composite builds (3.3)
• Your application has several modules, and you change a
module, usually you need build the module, publish the jar
to a repository and update other modules to have the
changes
• Composite builds helps us the split up the project into
smaller, independent builds. You can now quick-fix the
dependency and see the result right away.
14/01/2017 Gradle 60
Gradle Composite builds (3.3)
• In the settings.gradle file of the root project you can
include others projects build
14/01/2017 Gradle 61
Gradle Composite builds (3.3)
• Or include all projects under de “modules” directory.
14/01/2017 Gradle 62
Gradle in the GIT
• .gitignore file for Gradle projects
14/01/2017 Gradle 63
Converting Maven projects to Gradle
• Execute:
gradle init --type pom
• on the command line that Gradle will generate a
build.gradle from pom.xml file if all used Maven
plug-ins are known by Gradle
14/01/2017 Gradle 64
Gradle Integration with Jenkins
• Jenkins is an award-winning, cross-platform, continuous
integration and continuous delivery application that
increases your productivity.
• Use Jenkins to build and test your software projects
continuously making it easier for developers to integrate
changes to the project
14/01/2017 Gradle 65
Gradle Integration with Jenkins
• Jenkins basically schedule jobs (threads) to execute
some task
14/01/2017 Gradle 66
http://jenkins.info.ufrn.br/
Gradle Integration with Jenkins
14/01/2017 Gradle 67
First, we need to install
the Jenkins Gradle
plugin
Gradle Integration with Jenkins
14/01/2017 Gradle 68
• After install the plugin, in the Jenkins job, select “Invoke
Gradle script” and then write the tasks to be invoked
Gradle Integration with Jenkins
14/01/2017 Gradle 69
• Projects that generated a JAR to be publish in artefactory
Gradle Integration with Jenkins
14/01/2017 Gradle 70
• Projects that generated a EAR are deployed in JBOSS
surl.server.deploy.com
user
Gradle in practice
14/01/2017 Gradle 71
• An exemple of real Gradle script to build a project
structure with a unusual structure that generate a
system.ear file.
• https://jadsonjs.wordpress.com/2016/01/03/build-a-no-usual-project-
with-gradle/
Gradle in practice
14/01/2017 Gradle 72
Version of the System, at each
build this value needs to be update
Gradle in practice
14/01/2017 Gradle 73
Information about the source code
Group and Version
of the artifact generated
Gradle in practice
14/01/2017 Gradle 74
Source Folders of your application
Gradle in practice
14/01/2017 Gradle 75
Maven Central Repository
Others Repositories
Gradle in practice
14/01/2017 Gradle 76
Creating 4 own configurations
Some configuration include the
dependences of others
No cache this dependences
Gradle in practice
14/01/2017 Gradle 77
Our system
dependences
Our own dependences
Dependences
Copied to deploy in JBOSS
Dependences
Can not be Copied to JBOSS
Gradle in practice
14/01/2017 Gradle 78
To generated an EAR from
complex project structure, it was
created some tasks
Here we define the order how
theses tasks will execute
Gradle in practice
14/01/2017 Gradle 79
Create the “sigeventos.war”
Copy to the EAR the
dependences and META-INF
directory
Gradle in practice
14/01/2017 Gradle 80
The power of Gradle: make specific tasks that just exists in your systems
Gradle in practice
14/01/2017 Gradle 81
Configure the Eclipse class path. Configure Build Path any more!
Gradle in practice
14/01/2017 Gradle 82
Dependence of the Gradle script
Gradle in practice
14/01/2017 Gradle 83
Use the org.hidetake.ssh plugin to system deploy:
You can deploy in several serves
Can execute something
Gradle in practice
14/01/2017 Gradle 84
Information of the JAR in the
repository
Use the org.jfrog.artifactory plugin to publish in our
internal repository:
Gradle in practice
14/01/2017 Gradle 85
Use the org.flywaydb.flyway plugin to execute SQL
scripts automatically
Want to learn more?
• Initial Tutorial:
• http://www.vogella.com/tutorials/Gradle/article.html
• The complete build script:
• https://jadsonjs.wordpress.com/2016/01/03/build-a-no-usual-
project-with-gradle/
14/01/2017 Gradle 86
Gradle
• Pictures taken from
• https://pt.wikibooks.org/wiki/Programar_em_C/Makefiles
• https://solidsoft.wordpress.com/category/tricks-tips/
• http://pt.slideshare.net/tomek_k/convention-over-configuration-
maven-3-polyglot-maven-gradle-and-ant
• https://kamaondev.wordpress.com/2013/09/16/porque-voce-deve-
trocar-o-maven-pelo-gradle/
14/01/2017 Gradle 87
14/01/2017 Gradle 88

Contenu connexe

Tendances (20)

Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
GraalVM
GraalVMGraalVM
GraalVM
 
Android presentation - Gradle ++
Android presentation - Gradle ++Android presentation - Gradle ++
Android presentation - Gradle ++
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Spring boot
Spring bootSpring boot
Spring boot
 
Maven
MavenMaven
Maven
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
GitOps with ArgoCD
GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCD
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Hands on the Gradle
Hands on the GradleHands on the Gradle
Hands on the Gradle
 
Core java concepts
Core java  conceptsCore java  concepts
Core java concepts
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Kubernetes 101 Workshop
Kubernetes 101 WorkshopKubernetes 101 Workshop
Kubernetes 101 Workshop
 

En vedette

Gradle入門
Gradle入門Gradle入門
Gradle入門orekyuu
 
Spring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersSpring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersTakuma Watabiki
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed LockJadson Santos
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 

En vedette (6)

Gradle入門
Gradle入門Gradle入門
Gradle入門
 
Spring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersSpring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswers
 
Git
GitGit
Git
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 

Similaire à Gradle

Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gatesStrannik_2013
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesStrannik_2013
 
Gradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhereGradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhereStrannik_2013
 
Gradle 2.breaking stereotypes.
Gradle 2.breaking stereotypes.Gradle 2.breaking stereotypes.
Gradle 2.breaking stereotypes.Stfalcon Meetups
 
Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"Provectus
 
What's new in Gradle 4.0
What's new in Gradle 4.0What's new in Gradle 4.0
What's new in Gradle 4.0Eric Wendelin
 
6_PDFsam_DevOps.pdf
6_PDFsam_DevOps.pdf6_PDFsam_DevOps.pdf
6_PDFsam_DevOps.pdfmadhu291670
 
Build your android app with gradle
Build your android app with gradleBuild your android app with gradle
Build your android app with gradleSwain Loda
 
Gradle: One technology to build them all
Gradle: One technology to build them allGradle: One technology to build them all
Gradle: One technology to build them allBonitasoft
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleStrannik_2013
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for androidzhang ghui
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsBruno Borges
 
5_PDFsam_DevOps.pdf
5_PDFsam_DevOps.pdf5_PDFsam_DevOps.pdf
5_PDFsam_DevOps.pdfmadhu291670
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkMediacurrent
 
What's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the CloudWhat's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the Cloudmartinlippert
 
Enterprise build tool gradle
Enterprise build tool gradleEnterprise build tool gradle
Enterprise build tool gradleDeepak Shevani
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 

Similaire à Gradle (20)

Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gates
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypes
 
Gradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhereGradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhere
 
Gradle 2.breaking stereotypes.
Gradle 2.breaking stereotypes.Gradle 2.breaking stereotypes.
Gradle 2.breaking stereotypes.
 
Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"
 
What's new in Gradle 4.0
What's new in Gradle 4.0What's new in Gradle 4.0
What's new in Gradle 4.0
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
 
6_PDFsam_DevOps.pdf
6_PDFsam_DevOps.pdf6_PDFsam_DevOps.pdf
6_PDFsam_DevOps.pdf
 
Build your android app with gradle
Build your android app with gradleBuild your android app with gradle
Build your android app with gradle
 
Gradle: One technology to build them all
Gradle: One technology to build them allGradle: One technology to build them all
Gradle: One technology to build them all
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to Gradle
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for android
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
 
ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!
 
5_PDFsam_DevOps.pdf
5_PDFsam_DevOps.pdf5_PDFsam_DevOps.pdf
5_PDFsam_DevOps.pdf
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management Framework
 
What's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the CloudWhat's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the Cloud
 
Enterprise build tool gradle
Enterprise build tool gradleEnterprise build tool gradle
Enterprise build tool gradle
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Gradle : An introduction
Gradle : An introduction Gradle : An introduction
Gradle : An introduction
 

Plus de Jadson Santos

Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaJadson Santos
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with JenkinsJadson Santos
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuJadson Santos
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous DeliveryJadson Santos
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectJadson Santos
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...Jadson Santos
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizadaJadson Santos
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFJadson Santos
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 PresentationJadson Santos
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Jadson Santos
 

Plus de Jadson Santos (15)

Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and Java
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and Heroku
 
Vue.js
Vue.jsVue.js
Vue.js
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Java8
Java8Java8
Java8
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizada
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSF
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
 
Enums
EnumsEnums
Enums
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
 

Dernier

Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptkinjal48
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.Sharon Liu
 

Dernier (20)

Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.ppt
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
Salesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptxSalesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptx
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
 

Gradle

  • 2. Gradle 14/01/2017 Gradle 2 • Gradle is an advanced build tool of general purpose base on Groovy
  • 3. Why use a build tool? 14/01/2017 Gradle 3
  • 4. Why do not use Eclipse to build a system? 14/01/2017 Gradle 4 • You can not build automatically from everywhere with Eclipse • You will always need a person to build
  • 5. Make • Makefile is used to compile, linking, assembly among other tasks such as cleaning up temporary files, executing commands, etc. 14/01/2017 Gradle 5
  • 6. Apache ANT • The first widely build tool of the Java world • Ant is extremely flexible and does not impose coding conventions or directory layouts to the Java projects 14/01/2017 Gradle 6
  • 10. Apache ANT • Apache Ant cons • Too flexible • Write a lot of thing to do a simple build • The projects have no a standard structure, everyone create your own structure 14/01/2017 Gradle 10
  • 11. Apache Maven • Simple project setup that follows best practices - get a new project or module started in seconds • Convention over Configuration • Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies) 14/01/2017 Gradle 11
  • 13. Apache Maven • Based on the concept of a Project Object Model (POM) 14/01/2017 Gradle 13
  • 14. Apache Maven • Maven has a central repository 14/01/2017 Gradle 14 http://mvnrepository.com/
  • 15. Apache Maven • Apache Maven Central Repository 14/01/2017 Gradle 15
  • 16. Apache Maven • Apache Maven Central Repository 14/01/2017 Gradle 16
  • 17. Apache Maven • Apache Maven Central Repository 14/01/2017 Gradle 17 Central Repository Exist? 1º 2º 3º 2º / 4º Local Repository
  • 18. Apache Maven • Apache Maven cons • Too hard / rigid • Use of XML in the build file • Maven works great for 90% of the most common things, but complicates a lot for those 10% of specifics things of your project 14/01/2017 Gradle 18
  • 19. Apache Maven • Apache Maven cons 14/01/2017 Gradle 19
  • 20. Why Gradle? • Gradle combines good parts of both tools and builds on top of them with DSL and other improvements • It has Ant’s power and flexibility • Maven’s life-cycle and ease of use 14/01/2017 Gradle 20
  • 24. Why Gradle? 14/01/2017 Gradle 24 • https://gradle.org/maven_vs_gradle/
  • 25. Who is using Gradle? 14/01/2017 Gradle 25
  • 26. Who is using Gradle? 14/01/2017 Gradle 26
  • 27. Gradle Introduction • The script of the Gradle is a groovy script with a DSL to facilitated the tasks necessary to build • Instead with groovy language of “fors” and “ifs”, the Gradle DSL helps you 14/01/2017 Gradle 27
  • 28. DSL = Domain Specific Language • Small languages to solve a very specific problem • Example: SQL • SQL is an easer way to recovery data, instead use generic languages: for(int i = 0 ; i < qtdDiscente; i++){ if(discenteCollection[i].getMatricula() == 2013106430) discentes.add(new Object[].{discenteCollection[i].getId(), discenteCollection[i].getMatricula(), discenteCollection[i].getAnoIngresso()}); } return discentes; 14/01/2017 Gradle 28
  • 30. Gradle Introduction • Gradle is composed of two concepts: Projects and Tasks • A Project may represent the creation of a jar or a deploy of an application on the server. Each project is composed of several Tasks • Tasks represent some atomic job. 14/01/2017 Gradle 30
  • 31. Gradle Introduction • Example of a gradle task 14/01/2017 Gradle 31
  • 32. Gradle Introduction • Like ANT, it allows you to setup default tasks and dependencies between tasks. 14/01/2017 Gradle 32
  • 33. Gradle Introduction • But will I have to go back to the ANT times and program every step of my build? • No! Gradle supports the notion of plugins, like Maven 14/01/2017 Gradle 33
  • 34. Gradle Introduction • Tasks of the Java Plugin 14/01/2017 Gradle 34
  • 35. Gradle Introduction • Like Maven, Gradle uses Convention over Configuration • Imagine… What is the Gradle project Structure? • The same of Maven  14/01/2017 Gradle 35
  • 36. Gradle Introduction • Dependency management is a critical feature of every build • Transitive dependency management • Support for non-managed dependencies • Support for custom dependency definitions • Full Compatibility with Maven and Ivy • Integration with existing dependency management infrastructure 14/01/2017 Gradle 36
  • 37. Gradle Simple Java Project • Project Structure 14/01/2017 Gradle 37
  • 38. Gradle Simple Java Project • Project Build File 14/01/2017 Gradle 38 Apply Java Plugin Declare the repository to download de dependencies Declare the dependencies of your application
  • 39. Gradle Simple Web Project • Project Structure 14/01/2017 Gradle 39
  • 40. Gradle Simple Web Project • Project Build File 14/01/2017 Gradle 40 Apply Java and War Plugin Declare the directory of web application files
  • 41. Gradle • Group and Version of your application 14/01/2017 Gradle 41
  • 42. Gradle • Information about source code 14/01/2017 Gradle 42 Include source lines and vars at the .jar generated
  • 43. Gradle • Declare others repositories 14/01/2017 Gradle 43
  • 44. Gradle • Plugins to configure your application to your preferred IDE. 14/01/2017 Gradle 44
  • 45. Gradle Eclipse Plugin • Windows -> Eclipse Market -> Gradle -> Buildship Gradle Integration + Minimalist Gradle Editor 14/01/2017 Gradle 45
  • 46. Gradle Eclipse Plugin • Importing project as a Gradle Project • Import as -> Select “Gradle Project” 14/01/2017 Gradle 46
  • 47. Gradle Eclipse Plugin • Importing project as a Gradle Project • Select the project location 14/01/2017 Gradle 47
  • 48. Gradle Eclipse Plugin • Importing project as a Gradle Project • Use the Gradle wrapper inside de project or select the gradle local instalation 14/01/2017 Gradle 48
  • 49. Gradle Eclipse Plugin • Buildship Gradle Integration plugin does not come with a good editor • Change the default Gradle editor 14/01/2017 Gradle 49
  • 50. Gradle Eclipse Plugin • Executing Gradle in the Eclipse • Gradle Tasks tab -> Select the tasks -> double click in it 14/01/2017 Gradle 50
  • 51. Gradle Eclipse Plugin • Executing Gradle in the Eclipse • Usually when you import a Java project as a Gradle Project we have compilation errors. • So we need to run the “eclipse” task to Gradle generate the .classpath e .project files. • The compilation errors will disappear 14/01/2017 Gradle 51
  • 52. Gradle Multiple Projects • Real applications usually consist in many projects with dependences between theses projects, for example a common project that contains common code used by others projects • Gradle supports this structure. 14/01/2017 Gradle 52
  • 53. Gradle Multiple Projects • Define a root project that consist of 3 projects • app • api • build.gradle • impl • build.gradle • common • build.gradle • build.gradle • settings.gradle 14/01/2017 Gradle 53
  • 54. Gradle Multiple Projects • File settings.gradle of the root project 14/01/2017 Gradle 54
  • 55. Gradle Multiple Projects • With the buildship plugin, when you import the root project, all subprojects are imported 14/01/2017 Gradle 55
  • 56. Gradle Multiple Projects • In the build.gradle of the root project you can apply general configuration for all projects or all subprojects 14/01/2017 Gradle 56
  • 57. Gradle Multiple Projects • Dependence between projects • impl project depend of common and api project • So you can declare theses dependence in build.gradle of impl project 14/01/2017 Gradle 57
  • 58. Gradle Multiple Projects • Dependence between projects • impl project depend of common and api project • So you can declare theses dependence in build.gradle of impl project 14/01/2017 Gradle 58 Eclipse plugin configure the projects as dependence
  • 59. Gradle Composite builds (3.3) • “A composite build is simply a build that includes other builds. In many ways a composite build is similar to a Gradle multi-project build, except that instead of including single projects, complete builds are included”. • https://docs.gradle.org/current/userguide/composite_builds.html 14/01/2017 Gradle 59
  • 60. Gradle Composite builds (3.3) • Your application has several modules, and you change a module, usually you need build the module, publish the jar to a repository and update other modules to have the changes • Composite builds helps us the split up the project into smaller, independent builds. You can now quick-fix the dependency and see the result right away. 14/01/2017 Gradle 60
  • 61. Gradle Composite builds (3.3) • In the settings.gradle file of the root project you can include others projects build 14/01/2017 Gradle 61
  • 62. Gradle Composite builds (3.3) • Or include all projects under de “modules” directory. 14/01/2017 Gradle 62
  • 63. Gradle in the GIT • .gitignore file for Gradle projects 14/01/2017 Gradle 63
  • 64. Converting Maven projects to Gradle • Execute: gradle init --type pom • on the command line that Gradle will generate a build.gradle from pom.xml file if all used Maven plug-ins are known by Gradle 14/01/2017 Gradle 64
  • 65. Gradle Integration with Jenkins • Jenkins is an award-winning, cross-platform, continuous integration and continuous delivery application that increases your productivity. • Use Jenkins to build and test your software projects continuously making it easier for developers to integrate changes to the project 14/01/2017 Gradle 65
  • 66. Gradle Integration with Jenkins • Jenkins basically schedule jobs (threads) to execute some task 14/01/2017 Gradle 66 http://jenkins.info.ufrn.br/
  • 67. Gradle Integration with Jenkins 14/01/2017 Gradle 67 First, we need to install the Jenkins Gradle plugin
  • 68. Gradle Integration with Jenkins 14/01/2017 Gradle 68 • After install the plugin, in the Jenkins job, select “Invoke Gradle script” and then write the tasks to be invoked
  • 69. Gradle Integration with Jenkins 14/01/2017 Gradle 69 • Projects that generated a JAR to be publish in artefactory
  • 70. Gradle Integration with Jenkins 14/01/2017 Gradle 70 • Projects that generated a EAR are deployed in JBOSS surl.server.deploy.com user
  • 71. Gradle in practice 14/01/2017 Gradle 71 • An exemple of real Gradle script to build a project structure with a unusual structure that generate a system.ear file. • https://jadsonjs.wordpress.com/2016/01/03/build-a-no-usual-project- with-gradle/
  • 72. Gradle in practice 14/01/2017 Gradle 72 Version of the System, at each build this value needs to be update
  • 73. Gradle in practice 14/01/2017 Gradle 73 Information about the source code Group and Version of the artifact generated
  • 74. Gradle in practice 14/01/2017 Gradle 74 Source Folders of your application
  • 75. Gradle in practice 14/01/2017 Gradle 75 Maven Central Repository Others Repositories
  • 76. Gradle in practice 14/01/2017 Gradle 76 Creating 4 own configurations Some configuration include the dependences of others No cache this dependences
  • 77. Gradle in practice 14/01/2017 Gradle 77 Our system dependences Our own dependences Dependences Copied to deploy in JBOSS Dependences Can not be Copied to JBOSS
  • 78. Gradle in practice 14/01/2017 Gradle 78 To generated an EAR from complex project structure, it was created some tasks Here we define the order how theses tasks will execute
  • 79. Gradle in practice 14/01/2017 Gradle 79 Create the “sigeventos.war” Copy to the EAR the dependences and META-INF directory
  • 80. Gradle in practice 14/01/2017 Gradle 80 The power of Gradle: make specific tasks that just exists in your systems
  • 81. Gradle in practice 14/01/2017 Gradle 81 Configure the Eclipse class path. Configure Build Path any more!
  • 82. Gradle in practice 14/01/2017 Gradle 82 Dependence of the Gradle script
  • 83. Gradle in practice 14/01/2017 Gradle 83 Use the org.hidetake.ssh plugin to system deploy: You can deploy in several serves Can execute something
  • 84. Gradle in practice 14/01/2017 Gradle 84 Information of the JAR in the repository Use the org.jfrog.artifactory plugin to publish in our internal repository:
  • 85. Gradle in practice 14/01/2017 Gradle 85 Use the org.flywaydb.flyway plugin to execute SQL scripts automatically
  • 86. Want to learn more? • Initial Tutorial: • http://www.vogella.com/tutorials/Gradle/article.html • The complete build script: • https://jadsonjs.wordpress.com/2016/01/03/build-a-no-usual- project-with-gradle/ 14/01/2017 Gradle 86
  • 87. Gradle • Pictures taken from • https://pt.wikibooks.org/wiki/Programar_em_C/Makefiles • https://solidsoft.wordpress.com/category/tricks-tips/ • http://pt.slideshare.net/tomek_k/convention-over-configuration- maven-3-polyglot-maven-gradle-and-ant • https://kamaondev.wordpress.com/2013/09/16/porque-voce-deve- trocar-o-maven-pelo-gradle/ 14/01/2017 Gradle 87