SlideShare une entreprise Scribd logo
1  sur  38
De Maven à SBT
Stéphane Manciot
Memo

• Introduction
• De Maven à SBT
o Architecture en plugin Maven versus tâches SBT
o Maven phases versus tasks dependencies
o Avantages SBT versus Maven
Un bon outil de build doit …

• S’inscrire dans une démarche DevOps
• Être indépendant de l’environnement sur
lequel il s’exécute

• S’intégrer dans l’éco-système de l’entreprise
Mais aussi…
… Faciliter la vie des développeurs ;)
Architecture en plugin Maven
versus tâches SBT
Architecture de Maven

• Une architecture reposant essentiellement
sur :

o L’exécution de goals définis au sein de plugins
o Le rattachement de ces goals à des phases de l’un
des 3 cycles de vie prédéfinis de Maven
o L’utilisation d’un fichier au format xml (Project Object
Model) pour pouvoir configurer l’exécution des goals
Phases d’un Cycle de vie Maven
Valider
Valider
Compiler
Compiler
Tester
Tester
Packager
Packager
Tests d’intégration
Tests d’intégration
Vérifier
Vérifier
Installer
Installer
Déployer
Déployer
Goals mis en œuvre via des plugins
Valider
Valider

compiler:compile
compiler:compile

Compiler
Compiler
Tester
Tester
Packager
Packager

surfire:test
surfire:test
jar:jar
jar:jar

Tests d’intégration
Tests d’intégration
Vérifier
Vérifier
Installer
Installer
Déployer
Déployer
Définition du build au format XML
Limitations du format XML

• Je ne puis exécuter que des goals qui ont été
définis au sein de plugins existants

• L’apparition de nouveaux besoins requièrent :
o D’attendre la mise à disposition d’une nouvelle
version du plugin
o De définir soit même un nouveau goal
Ajout d’un goal avec Maven

• Création du fichier pom du plugin
Ajout d’un goal avec Maven

• Création d’un Mojo
Ajout d’un goal avec Maven

• Intégration du goal dans le pom
Ajout d’une tâche avec SBT

• Dans SBT il y a le S pour Simple 
Ajout d’une tâche avec SBT

• Dans SBT il y a le S pour Simple 
L’architecture sbt repose sur

• L’exécution de tâches ordonnancées de
manière explicite

• La configuration des tâches via des settings
• L’utilisation de Scala pour la définition des
builds
Phases Maven versus task
dependencies
Ordonnancement des goals Maven

• Exécution séquentielle des phases
• Ordonnancement implicite des goals (FIFO)
L’exécution d’une tâche SBT

• Est ordonnancée de manière explicite

• Produit un résultat exploitable pour les autres
tâches
L’exécution d’une tâche SBT

• Est ordonnancée de manière explicite

• Produit un résultat exploitable pour les autres
tâches
Exemple d’exploitabilité du résultat
Avantages SBT versus Maven
Performances

• Parallélisation de l’exécution des tâches
• Environnement de développement interactif
o Mode console SBT versus outil en ligne de
commande Maven
o Scala Read Evaluate Print Loop

• Méthode ~ pour l’exécution de tâche en
continu
Performances Scala REPL
Gestion multi-projets

• Maven impose :

o un lien d’héritage pour pouvoir partager des éléments
communs
o Une arborescence de fichiers dans le cadre de
l’aggrégation de modules

• SBT a supprimé ces 2 contraintes

o Le principe d’Hollywood
o Possibilité de créer des dépendances « distantes »
Incompatibilité versions scala

• Cross Compilation SBT
Incompatibilité versions scala

• … versus Maven injection
Gestion des dépendances
(Aether versus Ivy)

• Maven via Aether ne peut gérer qu’un
nombre fini de scopes

• SBT via Ivy s’appuie sur la notion de

Configuration qui rend la gestion plus souple
o Permet de définir plus finement les artefacts à
récupérer en fonction de la configuration choisie
Gestion des dépendances
SBT en entreprise
Mise en place d’un référentiel
d’entreprise
mavenmavencentral
central

typesafe
typesafe

scalascalasbt
sbt
Conf. du gestionnaire d’artefacts

• Ajout des référentiels distants Ivy
o sbt-plugin-releases
o typesafe-ivy-releases
o…

• Ajout des référentiels distants Maven
o maven repo1
o…

• Ajout d’un référentiel virtuel Ivy
• Ajout d’un référentiel virtuel Maven
Configuration de SBT

• Ajout des nouveaux dépôts

• Bloquer tous les autres dépôts définis au sein
des builds SBT

o sbt -Dsbt.override.build.repos=true
o Variable SBT_OPTS
Récupération des artefacts
Publication des artefacts
Publication des métriques dans sonar
Sources - Follow us on GitHub

•

maven2sbt :
https://github.com/ebiznext/maven2sbt

•

sbt-cxf-wsdl2java :
https://github.com/ebiznext/sbt-cxf-wsdl2java

•

sbt-groovy :
https://github.com/ebiznext/sbt-groovy

•

sbt-soapui:
https://github.com/ebiznext/sbt-soapui
Questions ?

Contenu connexe

Tendances

#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devopsEmmanuel Roldan
 
Configuration Management avec Drupal 8
Configuration Management avec Drupal 8Configuration Management avec Drupal 8
Configuration Management avec Drupal 8Aurelien Navarre
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusMartin Deslongchamps
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...Microsoft
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Royekino
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2teejug
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Olivier DASINI
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisJason De Oliveira
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à dockerBoubker ABERWAG
 

Tendances (20)

#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops
 
Configuration Management avec Drupal 8
Configuration Management avec Drupal 8Configuration Management avec Drupal 8
Configuration Management avec Drupal 8
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez Croesus
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Spring Batch - concepts de base
Spring Batch - concepts de baseSpring Batch - concepts de base
Spring Batch - concepts de base
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...
 
Windows HPC server sur Windows Azure (100
Windows HPC server sur Windows Azure (100Windows HPC server sur Windows Azure (100
Windows HPC server sur Windows Azure (100
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à docker
 

En vedette

Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streamsPSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streamsStephane Manciot
 
Spark / Mesos Cluster Optimization
Spark / Mesos Cluster OptimizationSpark / Mesos Cluster Optimization
Spark / Mesos Cluster Optimizationebiznext
 
Machine learning
Machine learningMachine learning
Machine learningebiznext
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosebiznext
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQLebiznext
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchMourad DACHRAOUI
 
Machine Learning - Spark / MLlib
Machine Learning - Spark / MLlibMachine Learning - Spark / MLlib
Machine Learning - Spark / MLlibebiznext
 

En vedette (10)

Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streamsPSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
 
Spark / Mesos Cluster Optimization
Spark / Mesos Cluster OptimizationSpark / Mesos Cluster Optimization
Spark / Mesos Cluster Optimization
 
Machine learning
Machine learningMachine learning
Machine learning
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macros
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQL
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
 
Machine Learning - Spark / MLlib
Machine Learning - Spark / MLlibMachine Learning - Spark / MLlib
Machine Learning - Spark / MLlib
 
JahiaOne - Performance Tuning
JahiaOne - Performance TuningJahiaOne - Performance Tuning
JahiaOne - Performance Tuning
 

Similaire à De Maven à SBT ScalaIO 2013

Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsFactoVia
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsAZUG FR
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaCédric Leblond
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfArouNa3
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Maven c'est bien, SBT c'est mieux
Maven c'est bien, SBT c'est mieuxMaven c'est bien, SBT c'est mieux
Maven c'est bien, SBT c'est mieuxFabrice Sznajderman
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests PlanDenis Voituron
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontZenika
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 

Similaire à De Maven à SBT ScalaIO 2013 (20)

Maven
MavenMaven
Maven
 
Universitélang scala tools
Universitélang scala toolsUniversitélang scala tools
Universitélang scala tools
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdf
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Présentation1
Présentation1Présentation1
Présentation1
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Maven c'est bien, SBT c'est mieux
Maven c'est bien, SBT c'est mieuxMaven c'est bien, SBT c'est mieux
Maven c'est bien, SBT c'est mieux
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 

De Maven à SBT ScalaIO 2013

  • 1. De Maven à SBT Stéphane Manciot
  • 2. Memo • Introduction • De Maven à SBT o Architecture en plugin Maven versus tâches SBT o Maven phases versus tasks dependencies o Avantages SBT versus Maven
  • 3. Un bon outil de build doit … • S’inscrire dans une démarche DevOps • Être indépendant de l’environnement sur lequel il s’exécute • S’intégrer dans l’éco-système de l’entreprise Mais aussi…
  • 4. … Faciliter la vie des développeurs ;)
  • 5. Architecture en plugin Maven versus tâches SBT
  • 6. Architecture de Maven • Une architecture reposant essentiellement sur : o L’exécution de goals définis au sein de plugins o Le rattachement de ces goals à des phases de l’un des 3 cycles de vie prédéfinis de Maven o L’utilisation d’un fichier au format xml (Project Object Model) pour pouvoir configurer l’exécution des goals
  • 7. Phases d’un Cycle de vie Maven Valider Valider Compiler Compiler Tester Tester Packager Packager Tests d’intégration Tests d’intégration Vérifier Vérifier Installer Installer Déployer Déployer
  • 8. Goals mis en œuvre via des plugins Valider Valider compiler:compile compiler:compile Compiler Compiler Tester Tester Packager Packager surfire:test surfire:test jar:jar jar:jar Tests d’intégration Tests d’intégration Vérifier Vérifier Installer Installer Déployer Déployer
  • 9. Définition du build au format XML
  • 10. Limitations du format XML • Je ne puis exécuter que des goals qui ont été définis au sein de plugins existants • L’apparition de nouveaux besoins requièrent : o D’attendre la mise à disposition d’une nouvelle version du plugin o De définir soit même un nouveau goal
  • 11. Ajout d’un goal avec Maven • Création du fichier pom du plugin
  • 12. Ajout d’un goal avec Maven • Création d’un Mojo
  • 13. Ajout d’un goal avec Maven • Intégration du goal dans le pom
  • 14. Ajout d’une tâche avec SBT • Dans SBT il y a le S pour Simple 
  • 15. Ajout d’une tâche avec SBT • Dans SBT il y a le S pour Simple 
  • 16. L’architecture sbt repose sur • L’exécution de tâches ordonnancées de manière explicite • La configuration des tâches via des settings • L’utilisation de Scala pour la définition des builds
  • 17. Phases Maven versus task dependencies
  • 18. Ordonnancement des goals Maven • Exécution séquentielle des phases • Ordonnancement implicite des goals (FIFO)
  • 19. L’exécution d’une tâche SBT • Est ordonnancée de manière explicite • Produit un résultat exploitable pour les autres tâches
  • 20. L’exécution d’une tâche SBT • Est ordonnancée de manière explicite • Produit un résultat exploitable pour les autres tâches
  • 23. Performances • Parallélisation de l’exécution des tâches • Environnement de développement interactif o Mode console SBT versus outil en ligne de commande Maven o Scala Read Evaluate Print Loop • Méthode ~ pour l’exécution de tâche en continu
  • 25. Gestion multi-projets • Maven impose : o un lien d’héritage pour pouvoir partager des éléments communs o Une arborescence de fichiers dans le cadre de l’aggrégation de modules • SBT a supprimé ces 2 contraintes o Le principe d’Hollywood o Possibilité de créer des dépendances « distantes »
  • 26. Incompatibilité versions scala • Cross Compilation SBT
  • 27. Incompatibilité versions scala • … versus Maven injection
  • 28. Gestion des dépendances (Aether versus Ivy) • Maven via Aether ne peut gérer qu’un nombre fini de scopes • SBT via Ivy s’appuie sur la notion de Configuration qui rend la gestion plus souple o Permet de définir plus finement les artefacts à récupérer en fonction de la configuration choisie
  • 31. Mise en place d’un référentiel d’entreprise mavenmavencentral central typesafe typesafe scalascalasbt sbt
  • 32. Conf. du gestionnaire d’artefacts • Ajout des référentiels distants Ivy o sbt-plugin-releases o typesafe-ivy-releases o… • Ajout des référentiels distants Maven o maven repo1 o… • Ajout d’un référentiel virtuel Ivy • Ajout d’un référentiel virtuel Maven
  • 33. Configuration de SBT • Ajout des nouveaux dépôts • Bloquer tous les autres dépôts définis au sein des builds SBT o sbt -Dsbt.override.build.repos=true o Variable SBT_OPTS
  • 37. Sources - Follow us on GitHub • maven2sbt : https://github.com/ebiznext/maven2sbt • sbt-cxf-wsdl2java : https://github.com/ebiznext/sbt-cxf-wsdl2java • sbt-groovy : https://github.com/ebiznext/sbt-groovy • sbt-soapui: https://github.com/ebiznext/sbt-soapui

Notes de l'éditeur

  1. Le build appliqué aux mêmes sources doit conduire aux même résultats eg à la création d’artefacts identiques Cadre de développement => proposer des valeurs par défaut -> pas de configuration + best practices Indépendant de l’environnement sur lequel le build est exécuté -> portabilité
  2. Le build appliqué aux mêmes sources doit conduire aux même résultats eg à la création d’artefacts identiques Cadre de développement => proposer des valeurs par défaut -> pas de configuration + best practices Indépendant de l’environnement sur lequel le build est exécuté -> portabilité
  3. Le build appliqué aux mêmes sources doit conduire aux même résultats eg à la création d’artefacts identiques Cadre de développement => proposer des valeurs par défaut -> pas de configuration + best practices Indépendant de l’environnement sur lequel le build est exécuté -> portabilité
  4. Project Object Model
  5. ----- Notes de la réunion (10/24/13 14:09) ----- A maven lifecycle is a series of sequential phases. Each phase can contain a zero or more tasks (in Maven terms a goal). When you execute a phase in maven, it will execute all of the preceding phases before executing that phase.
  6. ----- Notes de la réunion (10/24/13 14:09) ----- The configuration is XML based, which is great, except if you want to do stuff which requires options that aren't available. If the standard plugin does what you want, great. For a project which requires non-standard things, things sometimes get awkward. If there is a standard plugin which does what you want it to do, great. If the required option exists for the plugin you're using great. If it doesn’t, then the fun starts.
  7. ----- Notes de la réunion (10/24/13 14:09) ----- The configuration is XML based, which is great, except if you want to do stuff which requires options that aren't available. If the standard plugin does what you want, great. For a project which requires non-standard things, things sometimes get awkward. If there is a standard plugin which does what you want it to do, great. If the required option exists for the plugin you're using great. If it doesn’t, then the fun starts.
  8. ----- Notes de la réunion (10/24/13 14:36) ----- sbt is built around tasks. Unlike maven, there are no phases or goals or executions: just tasks. You want to do something, execute a task.
  9. ----- Notes de la réunion (10/24/13 14:36) ----- You want to ensure that a task runs after another task, add an explicit dependency between the tasks. If you want to use the results of a task in another task, push the output from one task into another. Multiple tasks can depend upon the output of the same task. By default, sbt runs all of the tasks in parallel, but using the dependency tree it can work out what should be sequential and what can be parallel => show an exemple with dependency tree
  10. ----- Notes de la réunion (10/24/13 14:36) ----- You want to ensure that a task runs after another task, add an explicit dependency between the tasks. If you want to use the results of a task in another task, push the output from one task into another. Multiple tasks can depend upon the output of the same task. By default, sbt runs all of the tasks in parallel, but using the dependency tree it can work out what should be sequential and what can be parallel => show an exemple with dependency tree
  11. Par exemple pour une librairie de gestion de données qui s’appuie sur la base NOSQL RIAK ou sur le système de fichiers avec une sérialisation binaire ou JSON, Ivy permet de définir les configurations NOSQL / FS / JSON / BIN et de permettre au client de télécharger uniquement les artefacts correspondants à son choix. En Maven il n’est pas possible de définir un scope NOSQL par exemple. Toutes les dépendances devront être rapatriées.