SlideShare une entreprise Scribd logo
Slickteam.fr
Maven est mort, Vive Gradle !
#GDBST
Geeking Days By SlickTeam
Slickteam.fr
Sommaire
• Aux origines de Gradle
• Découverte de Gradle
• Les «killer features»
• Migration
2
Slickteam.fr
Qui suis-je ?
• Jérémie Guidoux
• Partenaire Slickteam
• Ancien co-fondateur de Tocea
• Passionné d’informatique
• Passionné de voyage
• Travaillais avec Maven auparavant
• Découvre Gradle en 2013
3
Slickteam.fr
Un peu d’histoire…4
Slickteam.fr 5
Slickteam.fr 6
Slickteam.fr
Slickteam.fr
Configuration
Convention
over
configuration
Slickteam.fr 9
Slickteam.fr
Regardons un
peu en détails…
Slickteam.fr
Le Hello world
11
Slickteam.fr 12
Slickteam.fr
Ant trop
complexe ??
Slickteam.fr 14
Slickteam.fr
Compilation
ReportingTests
Exécution
Packaging
15
Slickteam.fr
Le Hello world v2
16
Slickteam.fr
Slickteam.fr 18
Slickteam.fr
Comparaisons : Hello world
• Nombre de lignes de code
19
Slickteam.fr
Slickteam.fr 21
Slickteam.fr 22
Slickteam.fr
Comparaisons : Hello world
• Nombre de lignes de code
23
Slickteam.fr
Les limites…
Les limites…
Slickteam.fr 25
Slickteam.fr
1.0
2004
3.5
2017
2.0
2005
3.0
2010
26
1.0 4.0
Slickteam.fr
Plugin Assembly
Plugin Shade
Plugin Assembly
Plugin «maison»
27
Projets / packaging
Slickteam.fr 28
Slickteam.fr 29
Slickteam.fr 30
Print dependencies
Deploy on tomcat
My custom packages
Integration-test
Slickteam.fr 31
Slickteam.fr 32
Slickteam.fr
Et Gradle ?
Slickteam.fr
Conventions de Maven
34
Slickteam.fr
Le Hello world v1
35
Slickteam.fr 36
Slickteam.fr
$> gradle printHelloWorld
$> gradle pHW
$> gradle print
37
Slickteam.fr
Petit aparté :
Les tâches
38
Slickteam.fr 39
Slickteam.fr 40
Cycle
de vie
Slickteam.fr 41
Slickteam.fr 42
Slickteam.fr
Le Hello world v2
43
Slickteam.fr
$> gradle build
44
Slickteam.fr
$> gradle build
Slickteam.fr 46
Slickteam.fr 47
Slickteam.fr 48
Slickteam.fr 49
Slickteam.fr
$> gradle build --profile
50
Slickteam.fr
$> gradle projectReport
51
Slickteam.fr
$> gradle build -Dscan
52
Slickteam.fr
Comparaisons : Hello world
• Nombre de lignes de code
53
Slickteam.fr
Comparaisons : Hibernate
54
• Nombre de ligne de code
Slickteam.fr
Comparaisons : Hibernate
55
• Nombre de ligne de code
Slickteam.fr
Killer features
Slickteam.fr 57
Slickteam.fr
Souplesse
58
Convention
Configuration
Slickteam.fr
Souplesse
59
Slickteam.fr
Souplesse
60
Slickteam.fr
Souplesse
61
Slickteam.fr
Souplesse
62
Slickteam.fr
Souplesse
63
Slickteam.fr
Souplesse
64
• Exec
• Copy
• Test
Slickteam.fr
Souplesse
65
Slickteam.fr
Souplesse
66
Slickteam.fr
Souplesse
67
$> gradle chromeFuncTest
Slickteam.fr
Souplesse
68
Slickteam.fr 69
Slickteam.fr
“The best way to do work faster is to
not do work that doesn’t need doing”
Gradle
70
Slickteam.fr
Built Incrémental
71
Slickteam.fr
Built Incrémental
72
Slickteam.fr
Build-cache
Cache Gradle
Projet
outputs
73
:javaCompile
Sources *.java
*.class
Inputs ?
Slickteam.fr
Scope machine et tous les builds
Build-cache
Cache Gradle
Projet3
outputs
74
Projet5
Projet4
Projet1
Projet2 gradle clean
Changements
de branches
Slickteam.fr
Build-cache
Cache
Gradle
75
Slickteam.fr
• Exécution de projets en parallèles
• Exécution de tests parallèles
• Configuration à la demande
• Téléchargement dépendances en parallèles
Voir https://guides.gradle.org/performance/ 76
Slickteam.fr
Comparaison temps de build
77
https://gradle.org/gradle-vs-maven-performance
Slickteam.fr 78
Slickteam.fr
Gestion des multi-projets
79
Projet
shared
api
personService
Slickteam.fr
Gestion des multi-projets
80
Projet
shared
api
personService
Slickteam.fr
Gestion des multi-projets
81
$> mvn install
Projet
shared
api
personService
api
Slickteam.fr
Gestion des multi-projets
82
$> gradle build
Projet
shared
api
personService
api
shared
Slickteam.fr
Gestion des multi-projets
83
$> gradle build
Projet
shared
api
personService
api
shared
Slickteam.fr
Gestion des multi-projets
84
Compile ?
$> gradle buildDependents
Projet
shared
api
personService
api
shared
personService
Slickteam.fr
Gestion des multi-projets
85
Compile PersonService ?
$> gradle :personService:build
Projet
shared
api
personService
Slickteam.fr
Gestion des multi-projets
86
Où dois-je écrire
mes fichiers
build.gradle ?
Projet
shared
api
personService
Slickteam.fr
Gestion des multi-projets
87
Slickteam.fr
Gestion des multi-projets
88
Projet
shared
api
personService
Slickteam.fr
Gradle wrapper
89
Clone
Slickteam.fr
Gradle wrapper
90
Clone
Slickteam.fr
Gradle wrapper
91
1.1
1.6
1.10
2.1
3.3
2.1
2.6
3.5
Slickteam.fr 92
Slickteam.fr
Gradle wrapper
93
Clone
Slickteam.fr
Gradle wrapper
94
$> gradle build$> ./gradlew build
Slickteam.fr
Gradle wrapper
95
$> gradle wrapper --gradle-version 4.0
Slickteam.fr
Et encore plus…
• Gestion des dépendances et des scopes poussée
• Le build continue ( option –t)
• Ajout de ‘scope’ customs (configuration)
• Gère de nombreux langages
• Java, Groovy, Scala, Kotlin, C/C++…
• Peut avoir plusieurs sourceSets
• Plusieurs langage dans un seul projet
• Peut appeler des commandes Ant
• ant.echo(`Hello World`)
• …
96Voir https://gradle.org/maven-vs-gradle
Slickteam.fr
Point faible
• L’auto-complétion dans les IDEs n’est pas optimale.
• À venir, possibilité d’utiliser le langage Kotlin à la place de Groovy
• Typage fort.
• Le langage Groovy
• Proche du java. Courbe d’apprentissage simple
• Connaitre l’API Gradle
• L’api de base permet de gérer la plupart des cas.
• Une très bonne documentation.
97Voir https://docs.gradle.org/4.0/userguide/userguide.html
Slickteam.fr
Slickteam.fr
Faut-il migrer vers Gradle ?
99
Nouveaux projets Projets existants
Slickteam.fr
Créer un nouveau projet avec Gradle
100
Slickteam.fr
Créer un nouveau projet avec Gradle
101
Slickteam.fr
Créer un nouveau projet avec Gradle
102
Slickteam.fr
Créer un nouveau projet avec Gradle
103
Slickteam.fr
Créer un nouveau projet avec Gradle
104
libs/
Slickteam.fr
Créer un nouveau projet avec Gradle
105
libs/
Slickteam.fr
Créer un nouveau projet avec Gradle
106
Slickteam.fr
Faut-il migrer vers Gradle ?
Nouveau projets Projets existants
107
Slickteam.fr
Faut-il migrer vers Gradle ?
108
• Problème de gestion de multi-projets ?
• Problème de packaging ?
• Lancer un build est-il lent ?
• Besoin urgent de souplesse ?
• Envie de créer des tâches sans créer de plugins
• Ajouter des « if » facilement ?
• Cohabitation de plusieurs langages difficiles ?
Slickteam.fr
Pourquoi migrer selon steve Ebersole (hibernate)
Maven
• Pas de multi-projet
• Plugin release à jeter
• Pas de connaissances des
projets frères
• Héritage des poms
• « On doit écrire un plugin»
• …
Gradle
• « build per conventions» + scripts
• Flexibilité
• Dépendances entre modules,
taches, configurations…
• Possibilité d’avoir plusieurs «souce
set»
• Le build incrémental
• Compatibilité avec Maven
109https://developer.jboss.org/wiki/Gradlewhy
Slickteam.fr
Migrer un projet existant
• Même structure de projet
• Peut rajouter un projet build.gradle tout en ayant un pom.xml
• $> gradle init convertit directement un projet Maven
• Plus compliqué pour les plugins customs
• En général ces même phases sont plus faciles à écrire en Gradle
110
Slickteam.fr 111
Slickteam.fr 112
Slickteam.fr
En conclusion
113
Slickteam.fr 114
Slickteam.fr
Configuration
Convention
over
configuration
115
Slickteam.fr 116
Slickteam.fr 117
Slickteam.fr
Créer un nouveau projet avec Gradle
118
Slickteam.fr 119
Slickteam.fr 120
Slickteam.fr
Fat jar & dépendances
121
Slickteam.fr
Téléchargement & dézippage
122
Slickteam.fr
Ajouter une configuration
123
Slickteam.fr
Ajouter une configuration
124
Slickteam.fr
Ajouter une configuration
125
Slickteam.fr 126
Slickteam.fr
Test d’intégrations
127

Contenu connexe

Similaire à Gradle Vs Maven by Slickteam & J Guidoux - 29/06/17

meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
Frederic Leger
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Publicis Sapient Engineering
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
pprem
 
Self-Service infrastructure pour GCP avec Terraform et Gitlab
Self-Service infrastructure pour GCP avec Terraform et GitlabSelf-Service infrastructure pour GCP avec Terraform et Gitlab
Self-Service infrastructure pour GCP avec Terraform et Gitlab
Julien Wittouck
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
Aurelien Navarre
 
Faire le pont entre designers et développeurs au Guardian
Faire le pont entre designers et développeurs au GuardianFaire le pont entre designers et développeurs au Guardian
Faire le pont entre designers et développeurs au Guardian
Kaelig Deloumeau-Prigent
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
Stéphane Liétard
 
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Benoit St-André
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Adrian CID ALMAGUER
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)
Nicolas Aguenot
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
Pierre Sudron
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
pprem
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
Michael Akbaraly
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Brown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tousBrown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tous
Cedric Gatay
 
Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de données
Quang Tu LE
 
📝 ✅ La checklist ultime pour rendre vos applications cloud native
📝 ✅ La checklist ultime pour rendre vos applications cloud native 📝 ✅ La checklist ultime pour rendre vos applications cloud native
📝 ✅ La checklist ultime pour rendre vos applications cloud native
KatiaHIMEUR1
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Mettez un peu de CI/CD dans vos projets data !
Mettez un peu de CI/CD dans vos projets data !Mettez un peu de CI/CD dans vos projets data !
Mettez un peu de CI/CD dans vos projets data !
Guillaume Rouchon
 

Similaire à Gradle Vs Maven by Slickteam & J Guidoux - 29/06/17 (20)

meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Self-Service infrastructure pour GCP avec Terraform et Gitlab
Self-Service infrastructure pour GCP avec Terraform et GitlabSelf-Service infrastructure pour GCP avec Terraform et Gitlab
Self-Service infrastructure pour GCP avec Terraform et Gitlab
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Faire le pont entre designers et développeurs au Guardian
Faire le pont entre designers et développeurs au GuardianFaire le pont entre designers et développeurs au Guardian
Faire le pont entre designers et développeurs au Guardian
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Brown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tousBrown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tous
 
Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de données
 
📝 ✅ La checklist ultime pour rendre vos applications cloud native
📝 ✅ La checklist ultime pour rendre vos applications cloud native 📝 ✅ La checklist ultime pour rendre vos applications cloud native
📝 ✅ La checklist ultime pour rendre vos applications cloud native
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Mettez un peu de CI/CD dans vos projets data !
Mettez un peu de CI/CD dans vos projets data !Mettez un peu de CI/CD dans vos projets data !
Mettez un peu de CI/CD dans vos projets data !
 

Dernier

Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO Technology
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 

Dernier (6)

Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 

Gradle Vs Maven by Slickteam & J Guidoux - 29/06/17

Notes de l'éditeur

  1. #GDBST twitter live Promouvoir les nouvelles technologies Commercer par gradle Pourquoi Gradle ? vent en poupe. De plus en plus utilisé Manginal an france Apréro   Peu en france
  2. Les origines de Gradle Se base , appris de l’existant Comprendre les principes fondateur de Gradle Comparaison avec Ant et Maven
  3. Commençon par un peu d’histoire des outils de construction de projet (outil de build). Monde Java,, Outils de build, Ant et Maven + utilisés Gradle inspiré des 2
  4. AU commencement il y avait ant, hérite de gnu make XML
  5. Mode Write only
  6. En oppositon : Maven Changement de paradigme
  7. Ant . On configure tout. Maven . On décrit le projet et on se base sur des conventions
  8. Gradle. Prend le meilleur des 2
  9. Qu’est ce qu’on appelle un outil de build ? Que doit-il faire ?
  10. Que fait ce fichier de conf ant ?
  11. Rajourtons les tests
  12. Principales fonctionalités Bémol tests
  13. Comment Maven résout ceci ? Conventions Il à les infos
  14. Rajoutons les tests
  15. Rajoutons l’exécution
  16. Comme ant avec un reporting moyen
  17. 2* Moins de lignes. + foncionnlités Mais Il reste de gros manque
  18. Férénant
  19. Peu innovation depuis la 3 OU est la 3,4 ? Meme temps gradle Couleur console. Youpi Mais il y a des demandes bien plus importanttes
  20. Des plugins difficiles à lire. Plugin maisons. Ou multiplication de projets.
  21. Exemple simple de fichier assemble. Avec fircher reamda, licence, notic, le site web. Inclusion de jars
  22. Tant qu’on suit la route. Tout va. Simple et rapide. En dehors. Il faut se battre. Il nous manque des taches. Ajout / creation de plugin. Verbeux. Plugin également rigide
  23. Des tachns = plugin Pas detaches isolées Possible dans Ant et on verra également dans Gradle
  24. Gestion de multi-project catasropfique Il y en a pas
  25. Même convention que Maven Fichier de conf build.gradle. Écrit en groovy
  26. Je carricature un peu Valide Éxécuté a chaque fois. Pas lié à une tache Message de bienvenue par ex
  27. Tache hello world. Non attaché à un plugin. Comme ant et non maven Comment on peut éxécuté cette tache.
  28. J’ai parlé des taches. Je propose un petit apparté pour mieux comprendre comment ces 3 outils gèrent ces notions
  29. Taches = target Peuvent être ajouté facilement. Possibilité de créer un graphes te taches
  30. Taches = goal Les taches = plugin Maven donnent une notions de cycle de vie. Représenté par des phases dépendantes entre elles. Cette notion de cycle de vie est l’une des forces de Maven Cycle de vie = route Mais aussi ça rigueur Sur une lignes. Pas en graphes Que se passe t’il si ce cycle ne nous convient pas parfaitement ?
  31. Taches = task Possiblité d’en créer de manière isolé comme ant De créer un graphes de taches comme ant. Ou Comme Maven Utilisation/création de plugin Il y a des plugins avec des graphes de taches compleses comme le plugin java Cycle de vie
  32. 1 ligne. Cycle de vie
  33. Que fait ce scirpt de 1 ligne ? Je met un valid pour le reporting. Je vais rapidement vous montrer pourquoi
  34. Rajoutons les tests Exemple de jcenter ici. Syntaxe proche de maven vert pour le reporting => génération de rapport de tests intéressante
  35. Regardons la fonctionnalité qui nous manquait. Executer un programme.
  36. Génération de rapport html de base des tests
  37. Génération de rapport de build.
  38. Génération de rapports html de dépendances
  39. Le build scan.. Un généraiton de rapport plus complex de build centralisé sur les serveurs de gradle
  40. À fonctionnalité identique sur un petit projet. Gradle s’en sort le mieux en nomble de ligne. Il est le seul a bien s’en sortir pour la génération de rapports
  41. Mais qu’en est-il sur un vrai projet ? Je prend hibernate au moment de sa migration vers gradle entre la v3 et la v6
  42. Je ne compare pas la vitesse car il s’agissait a ce moment de gradle 1, qui n’avait pas les fonctionnalité qui augmentent la vitesse de build qu’il a aujourd’hui
  43. Gradle est souple
  44. Un dsl à la gradle en groovy basé même paradigme que Maven Convention over confnguration Pas dépaysé convention ne suffit pas, on peut - nos propre taches - Puis utiliser le langage groovy - Dependance en fonction de profile. Faisable avec maven
  45. Si un projet ne contient pas les noms release ou documentation alers je déclare cette configurations. Comment le faire avec Maven
  46. On peut également enrichir le DSL. Ici il s’agit d’ajouter une notion de serveu . En réalité on a écrit un plugin
  47. Engichissons le plugin Démarrer le serveur Plugin de type Exec. Héritage Plus le stopper Deploiment de webapp Téléchargement ?
  48. Ou placet notr plugin ??? build.gradle. => simple fichier gradle externe.: quand c’est typique au projet Plugin «lourd» à la maven. Écrier en java, groovy, kotlin. Ajout de tests. Framework test puissant Toujours gradle nous laisse le choix
  49. Taches = actions à éffectuer sur votre projet Importart : souple Gradle pousse très loins cette souplesse Jouons un peu avec
  50. Tache simple Taches te type Fitrer taches => action sur groupe
  51. Graphes de taches
  52. Ajout d’action Avant apres
  53. Gradle est il rapide pour exécuter des builds
  54. Si une action n’a pas besoin d’êter exécuter, alors pourquoi l’exécuter ? Et une grosse partie de la rapidité des build gradle est là. Ce n’est pas magique.
  55. Projet démo Noter les no-sources 2buidt (sans clean) Notes les up-to-date Gradle remarque pas de modif, -> pas d’execution
  56. Vous allez me dire, normal ! Il n’a rien fait. Mais comment savait-il qu’il ne l’a pas fait ?
  57. Le build-cache est tout nouveaux. Je n’ai pu que le tester bièvement. Connais tu mes entrées? Oui, t’embete pas je te donne les sorties
  58. Scope machine et tous les builds. Gestionnaire de version Changement de branche Rolleback etc. clean
  59. Pas testé Peut-être gradle entrepise Parc informatique, intégration continue Build réguilée Gradle cache aliment Poste dev *> build cache
  60. Le démon gradle. Qui permet de minimiser de tempse de confiquration des projets Java-library. Une gestion des dépendances plus précise avec la notion de dépendances de types api et implementaton
  61. Parlons maintenant la gestion des gros projets contenant des sous-projets Ma bete noire avec Maven Maven ne gère pas les multi-projets Projet qui en contient d’autre
  62. examples fournit par gradle que j’ai simplifié pour l’occasion
  63. Récuprer un projet de gitbuh Build Succes Bonne pratuqe
  64. Rarement le cas.
  65. Nombreux outil Nombreuses version
  66. Case tête du dév à installer et configurer. Projet 1. avec une version de gradle Projet 2 avec une autre version de gradle
  67. Pas besoin de gradle installé Toujours ça en moins
  68. Fircher gradlew Récupération du dépôt .gradle non versioné
  69. Init gradle wrapper
  70. Écosysième de projets maven Quid intégration du nvo projet gradle ? Gradle  ok Maven  ok
  71. Idem apache ivy
  72. Idem avach ant
  73. Nouveaux projets. La question se pose
  74. Se poser les bonne question Que gradle arrivent en solution.