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

Tendances (20)

Android presentation - Gradle ++
Android presentation - Gradle ++Android presentation - Gradle ++
Android presentation - Gradle ++
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Gradle
GradleGradle
Gradle
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Maven ppt
Maven pptMaven ppt
Maven ppt
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction to kotlin
Introduction to kotlinIntroduction to kotlin
Introduction to kotlin
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafSpring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & Beyond
 
Broadcast Receiver
Broadcast ReceiverBroadcast Receiver
Broadcast Receiver
 
java 8 new features
java 8 new features java 8 new features
java 8 new features
 
Introduction to Spring Cloud
Introduction to Spring Cloud           Introduction to Spring Cloud
Introduction to Spring Cloud
 
Kotlin Language powerpoint show file
Kotlin Language powerpoint show fileKotlin Language powerpoint show file
Kotlin Language powerpoint show file
 

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
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
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
 
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"
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
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!
 
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

SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 

Dernier (20)

SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 

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