Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
Les secrets du conteneur Spring vous attendent pour ce 3ième workshop sur le framework Spring : module spring-test, injection de beans de portées différentes, support des JSR 250 et 330, post-processeurs de beans, fichiers de configuration et abstraction de l’accès aux ressources.
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
Aujourd'hui, avec Spring Boot, la promesse est de pouvoir bootstrapper en 60 secondes chrono une application.
C'est génial et porteur de sens (et un vrai laboratoire de bonnes pratiques) mais le temps de bootstrapping de l'équipe de développement, des individus composant cette équipe, est bien loin de suivre la même célérité. Dans le pire des cas, vous rencontrerez même des équipes au sein desquelles les écarts de niveaux sont extrêmement importants.
Pourquoi donc ? Réfléchissez à ce qui se passe si vous donnez le volant d'une formule 1 à quelqu'un qui vient tout juste d'obtenir son permis A après avoir fait son apprentissage sur une petite citadine dans une grande ville ... et vous aurez un début de réponse.
Le portfolio Spring constitue une excellente et populaire boîte à outils qui vous promet une grande productivité. Pour tirer profit de cette productivité et ne pas rester bridé par les connaissances de l'équipe, il ne suffit pas de choisir le bon framework, il faut savoir comment l'utiliser, le sublimer, en épousant les paradigmes de ce dernier.
Je vous propose donc d'en revenir aux fondamentaux de Spring (Boot) afin de vous permettre, bien avant de pouvoir vous attaquer au graal des architectures Microservices, d'être capable de tirer la pleine puissance du framework, tout du moins de ne pas en détourner l'essence.
Si vous n'êtes pas familier de Spring, ce talk vous permettra d'en avoir un premier aperçu pragmatique sans effet waouh. Si vous connaissez déjà Spring, vous trouverez à travers ce talk l'opportunité de prendre du recul sur son usage et de confronter vos pratiques aux patterns et bénéficies qu'il vous offre.
Chaque jour, de nombreux développeurs utilisent le framework Spring pour l’injection de dépendances et la gestion des transactions. Majeures, ces 2 fonctionnalités ne nécessitent pas un gros effort d’apprentissage. Pour autant, leurs mises en œuvre par le framework est complexe. Par curiosité intellectuelle, mais également afin d’éviter certains pièges et de profiter pleinement des capacités de Spring, il est intéressant de comprendre les mécanismes internes du framework qu’on utilise au quotidien : cycle de vie d’un bean, proxy, intercepteur, post-processeur, fabrique de beans, hiérarchie de contextes, portée …
Les slides de cette présentation ont pour objectif de vous les faire les introduire.
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
Rejoignez les millions de développeurs Spring
De par sa forte pénétration dans les entreprises, tout développeur Java /JEE a ou aura à travailler sur une application s’appuyant sur Spring. Or Spring dépasse le cadre du simple framework open source.
Cette série de 5 workshops a pour objectif de faire un tour d’horizon de l’écosystème des technologies supportées par Spring avant de se focaliser plus spécifiquement sur certaines d’entre elles.
Retours d’expérience, bonnes pratiques, techniques avancées seront de partie.
Propulsée dans Java EE 6 avec CDI et plus récemment au sein de JavaScript avec Google Gin, l’injection de dépendance sera au cœur du premier workshop.
Voici le support de présentation du workshop sur Spring que j'ai animé en novembre 2011 au sein de ma SSII et que j'ai réactualisé avant sa diffusion sur Slideshare.
Au sommaire du workshop :
1. Zoom sur le portfolio Spring Source
1. Le cœur du framework Spring : IoC, AOP et support
2. Le support proposé par Spring : persistance, présentation, communication, test, outils …
2. Les fondamentaux
1. Fonctionnement du conteneur léger
2. Les beans Spring
3. Les design patterns rencontrés dans Spring
GWT Principes & Techniques
Des IHM avec GWT
Des IHM avec GWT +
Communiquer avec le serveur
Internationalisation I18n
Développer un composant graphique
Historique du navigateur
Logging
Tester avec JUNIT
Divers principes avancées
JavaScript overlay types
Intégrer une appli GWT dans JavaScript
Code Splitting
Étendre la JRE Émulation
Sérialisation spécifique
Compile Reports
Se support présente l'outil d'intégration Maven dans le processus d'industrialisation du génie logiciel. Tout ce qu'il faut savoir sur maven.
La deuxième partie de ce cours traite la mise en oeuvre de maven dans des projets basés sur JPA, Hibernate, Spring et Struts.
Bon apprentissage à tous
Java SE 8 est sûrement la version la plus importante et la plus impactante pour les développeurs. Deux ans après sa sortie, ce talk propose des retours sur les bonnes ou moins bonnes utilisations des principales fonctionnalités de Java 8. Une connaissance de ces fonctionnalités est requise.
Vous ne vous y retrouver pas dans la nébuleuse Spring ?
Vous avez entendu parler de Spring Batch (ou pas d’ailleurs), vous aimeriez que l’on vous explique comment on s’en sert ?
Vous voulez en savoir plus sur ce framework ?
Alors venez au prochain NormandyJUG !
Jean-Philippe Briend est Architecte chez Infin-IT, société de service de petite taille spécialisée en Nouvelles Technologies et Finance / Assurance.
Il est intervenu chez de grands comptes (grande distribution, finance, assurance, éditeurs, etc…) sur des projets Java / J2ee stratégiques.
En 2010, il est intervenu comme Architecte pour la refonte de batchs orientée Performance chez un grand éditeur français.
Il nous présentera Spring Batch et son retour d’expérience de ce projet.
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
Vous avez déjà entendu parler d’Apache Camel ?
Les Design Pattern n’ont plus de secrets pour vous ?
L’Event Driven Architecture vous attire ?
Les Enterprise Integration Pattern vous interpellent ?
Vos applications reposent sur TCP, JMS, FTP, SFTP, les fichiers, les mails, XML, les web services SOAP, REST, RSS, JPA, JDBC ou même Twitter ?
N’attendez plus : venez découvrir l’utilisation des patterns comme le Channel Adapter, le Router ou l’Aggregator au travers d’un workshop sur Spring Integration.
Voici le support de présentation d’un workshop d’1h s’appuyant sur le cas d’étude suivant : un moteur chargé d’indexer des données clients dans le moteur de recherche Elasticsearch.
Une connaissance minimaliste de Spring Framework est pré-requise.
Spring Integration est à votre portée de main. EAI et ESB n’ont qu’à bien se tenir !!
Une usine logicielle est un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements.
L’objectif est d’automatiser au maximum la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
Les secrets du conteneur Spring vous attendent pour ce 3ième workshop sur le framework Spring : module spring-test, injection de beans de portées différentes, support des JSR 250 et 330, post-processeurs de beans, fichiers de configuration et abstraction de l’accès aux ressources.
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
Aujourd'hui, avec Spring Boot, la promesse est de pouvoir bootstrapper en 60 secondes chrono une application.
C'est génial et porteur de sens (et un vrai laboratoire de bonnes pratiques) mais le temps de bootstrapping de l'équipe de développement, des individus composant cette équipe, est bien loin de suivre la même célérité. Dans le pire des cas, vous rencontrerez même des équipes au sein desquelles les écarts de niveaux sont extrêmement importants.
Pourquoi donc ? Réfléchissez à ce qui se passe si vous donnez le volant d'une formule 1 à quelqu'un qui vient tout juste d'obtenir son permis A après avoir fait son apprentissage sur une petite citadine dans une grande ville ... et vous aurez un début de réponse.
Le portfolio Spring constitue une excellente et populaire boîte à outils qui vous promet une grande productivité. Pour tirer profit de cette productivité et ne pas rester bridé par les connaissances de l'équipe, il ne suffit pas de choisir le bon framework, il faut savoir comment l'utiliser, le sublimer, en épousant les paradigmes de ce dernier.
Je vous propose donc d'en revenir aux fondamentaux de Spring (Boot) afin de vous permettre, bien avant de pouvoir vous attaquer au graal des architectures Microservices, d'être capable de tirer la pleine puissance du framework, tout du moins de ne pas en détourner l'essence.
Si vous n'êtes pas familier de Spring, ce talk vous permettra d'en avoir un premier aperçu pragmatique sans effet waouh. Si vous connaissez déjà Spring, vous trouverez à travers ce talk l'opportunité de prendre du recul sur son usage et de confronter vos pratiques aux patterns et bénéficies qu'il vous offre.
Chaque jour, de nombreux développeurs utilisent le framework Spring pour l’injection de dépendances et la gestion des transactions. Majeures, ces 2 fonctionnalités ne nécessitent pas un gros effort d’apprentissage. Pour autant, leurs mises en œuvre par le framework est complexe. Par curiosité intellectuelle, mais également afin d’éviter certains pièges et de profiter pleinement des capacités de Spring, il est intéressant de comprendre les mécanismes internes du framework qu’on utilise au quotidien : cycle de vie d’un bean, proxy, intercepteur, post-processeur, fabrique de beans, hiérarchie de contextes, portée …
Les slides de cette présentation ont pour objectif de vous les faire les introduire.
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
Rejoignez les millions de développeurs Spring
De par sa forte pénétration dans les entreprises, tout développeur Java /JEE a ou aura à travailler sur une application s’appuyant sur Spring. Or Spring dépasse le cadre du simple framework open source.
Cette série de 5 workshops a pour objectif de faire un tour d’horizon de l’écosystème des technologies supportées par Spring avant de se focaliser plus spécifiquement sur certaines d’entre elles.
Retours d’expérience, bonnes pratiques, techniques avancées seront de partie.
Propulsée dans Java EE 6 avec CDI et plus récemment au sein de JavaScript avec Google Gin, l’injection de dépendance sera au cœur du premier workshop.
Voici le support de présentation du workshop sur Spring que j'ai animé en novembre 2011 au sein de ma SSII et que j'ai réactualisé avant sa diffusion sur Slideshare.
Au sommaire du workshop :
1. Zoom sur le portfolio Spring Source
1. Le cœur du framework Spring : IoC, AOP et support
2. Le support proposé par Spring : persistance, présentation, communication, test, outils …
2. Les fondamentaux
1. Fonctionnement du conteneur léger
2. Les beans Spring
3. Les design patterns rencontrés dans Spring
GWT Principes & Techniques
Des IHM avec GWT
Des IHM avec GWT +
Communiquer avec le serveur
Internationalisation I18n
Développer un composant graphique
Historique du navigateur
Logging
Tester avec JUNIT
Divers principes avancées
JavaScript overlay types
Intégrer une appli GWT dans JavaScript
Code Splitting
Étendre la JRE Émulation
Sérialisation spécifique
Compile Reports
Se support présente l'outil d'intégration Maven dans le processus d'industrialisation du génie logiciel. Tout ce qu'il faut savoir sur maven.
La deuxième partie de ce cours traite la mise en oeuvre de maven dans des projets basés sur JPA, Hibernate, Spring et Struts.
Bon apprentissage à tous
Java SE 8 est sûrement la version la plus importante et la plus impactante pour les développeurs. Deux ans après sa sortie, ce talk propose des retours sur les bonnes ou moins bonnes utilisations des principales fonctionnalités de Java 8. Une connaissance de ces fonctionnalités est requise.
Vous ne vous y retrouver pas dans la nébuleuse Spring ?
Vous avez entendu parler de Spring Batch (ou pas d’ailleurs), vous aimeriez que l’on vous explique comment on s’en sert ?
Vous voulez en savoir plus sur ce framework ?
Alors venez au prochain NormandyJUG !
Jean-Philippe Briend est Architecte chez Infin-IT, société de service de petite taille spécialisée en Nouvelles Technologies et Finance / Assurance.
Il est intervenu chez de grands comptes (grande distribution, finance, assurance, éditeurs, etc…) sur des projets Java / J2ee stratégiques.
En 2010, il est intervenu comme Architecte pour la refonte de batchs orientée Performance chez un grand éditeur français.
Il nous présentera Spring Batch et son retour d’expérience de ce projet.
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
Vous avez déjà entendu parler d’Apache Camel ?
Les Design Pattern n’ont plus de secrets pour vous ?
L’Event Driven Architecture vous attire ?
Les Enterprise Integration Pattern vous interpellent ?
Vos applications reposent sur TCP, JMS, FTP, SFTP, les fichiers, les mails, XML, les web services SOAP, REST, RSS, JPA, JDBC ou même Twitter ?
N’attendez plus : venez découvrir l’utilisation des patterns comme le Channel Adapter, le Router ou l’Aggregator au travers d’un workshop sur Spring Integration.
Voici le support de présentation d’un workshop d’1h s’appuyant sur le cas d’étude suivant : un moteur chargé d’indexer des données clients dans le moteur de recherche Elasticsearch.
Une connaissance minimaliste de Spring Framework est pré-requise.
Spring Integration est à votre portée de main. EAI et ESB n’ont qu’à bien se tenir !!
Une usine logicielle est un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements.
L’objectif est d’automatiser au maximum la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».
Ce guide fournit un exemple de la manière dont Spring Boot vous aide à accélérer le développement d'applications. Au fur et à mesure que vous lirez plus de guides de démarrage de Spring, vous verrez plus de cas d'utilisation de Spring Boot. Ce guide est destiné à vous donner un aperçu rapide de Spring Boot. Si vous souhaitez créer votre propre projet basé sur Spring Boot, visitez Spring Initializr, remplissez les détails de votre projet, choisissez vos options et téléchargez un projet groupé sous forme de fichier zip.
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
Scub Foundation est un ensemble de frameworks, de conventions, d'outils et de procédures qui structurent les développeurs et leurs développements. Pour simplifier, c'est une plateforme qui permet l'industrialisation des projets de développement informatique.
Plus d'informations à http://www.scub-foundation.org
Objectifs du socle
- Ne pas réinventer la roue ! (Intégration d'Eclipse et des frameworks populaires comme hibernate, spring, gwt, JUnit…).
- Avoir des modèles de projets pour chaque type de projet mais avec des structures identiques.
- Avoir des tâches automatisées pour l'ensemble du cycle de vie du projet (compilation, packaging, test…).
- Développement SOA (intégration de la notion de noyau et du découplage Interface/implémentation).
- Gestion automatique des dépendances / librairies.
- Gérer les différents environnements (Test / Développement / Pré production / Production…).
Concrètement, notre socle technique offre au développeur un environnement de développement intégrant les meilleurs éléments Open Source (Eclipse, Maven, Spring, GWT…) ainsi que des modèles de projet.
C’est Quoi Maven?
Création d’un Projet Maven
Balises du POM.XML
Arborescence Standard
Buts (Goals)
TP : Projet avec Maven (JAR)
TP : Projet Web Avec Maven (WAR)
Bien que Docker soit facile d'utilisation, construire une image reste un exercice compliqué.
Optimisation, layers, et sécurité nécessitent de s'abstraire des Dockerfile basiques qu'on peut trouver sur internet.
Dans ce BBL, nous verrons comment bien packager une application Spring Boot dans une image Docker/OCI.
Nous allons parcourir les bonnes pratiques préconisées par Spring, les pièges à éviter, comment bien écrire un Dockerfile pour optimiser la construction et l'image finale pour une exécution dans Kubernetes et nous verrons aussi des moyens alternatifs de construction d'images Spring Boot et l'outillage d'analyse à ajouter à votre toolbox.
Ce chapitre est destiné pour les étudiants de la 2ème année année master Mathématiques, Cryptologie et Sécurité Informatique (MMCSI) Semestre 3. Il traite les concepts de base du langage Java.
Démarrer un projet sous SBT rapidement, ajouter du code, des dépendances et créer un livrable exécutable sur n'importe quelle plateforme (unix/windows/docker)
1. La Bonne Gestion des Projects
Loigciels Avec
Université de 20 Août 1955 Skikda
Faculté des sciences et sciences de l’ingénieur
Département de l’informatique
Enseignent :
-Dr.Boubendire
Réalisé par :
- Boulkenafet Samir
-Lahlah Houssam
-Djhekar Loubna
-Bougarouche Roumaisa
3. Historique
JCL
1960
Make
1977
Ant
2000
Maven
2005
Job Control Language (Langage de Contrôle des Tâches),
couramment appelé JCL , désigne certains langages de scripts, en
particulier sur les systèmes d'exploitation mainframe d'IBM, dont le
rôle est d'exécuter un batch.
Make est un logiciel qui construit automatiquement des fichiers,
souvent exécutables, ou des bibliothèques à partir d'éléments de base
tels que du code source.
Ant est un logiciel créé par la fondation Apache qui vise à automatiser
les opérations répétitives du développement de logiciel telles que
la compilation, la génération de documents (Javadoc) ou l'archivage au
format JAR.
Maven ?
m
1
4. Maven
Maven, géré par l'organisation Apache Software Foundation . (
Jakarta Project), est un outil pour la gestion et l'automatisation de
production des projets logiciels Java en général et Java EE en
particulier .
L'objectif recherché est de
◦ produire un logiciel à partir de ses sources,
◦ en optimisant les tâches réalisées à cette fin
◦ et en garantissant le bon ordre de fabrication.
Compiler, Tester, Contrôler, produire les packages livrables
Publier la documentation et les rapports sur la qualité
Apports :
◦ Simplification du processus de construction d’une application
◦ Fournit les bonnes pratique de développement
◦ Tend à uniformiser le processus de construction logiciel
◦ Vérifier la qualité du code
◦ Faciliter la maintenance d’un projet
2
5. Maven : POM
Maven utilise un paradigme connu sous le nom de Project Object
Model (POM) afin de :
◦ Décrire un projet logiciel,
◦ Ses dépendances avec des modules externes
◦ et l'ordre à suivre pour sa production.
Il est livré avec un grand nombre de tâches ( GOLS ) prédéfinies,
comme la compilation du code Java ou encore sa modularisation.
3
7. Maven : Les concepts
Descripteurs de Projets
Cycle de vie et plugins
Référentiels de laibririe
8. Descripteurs de Projets
Project Object Model : POM
Base de travail de Maven :
◦ Un projet Maven est un module d’une application
◦ Equivalent à un projet Eclipse
Fichier XML (pom.xml) décrivant le projet Maven
◦
◦
◦
◦
◦
Versions du projet
Description du projet
Liste des développeurs
Les dépendances
…
Ce fichier est utilisé par maven pour construire l’application:
◦ Dépendances de l’application (Laibrairies .jar)
◦ Tâches (Gols) à exécuter
Fournie des valeurs par défaut (Bonne pratique):
Exemple : Répertoire source (src/main/java)
Un seul POM est nécessaire pour un projet
◦ Le commandes de maven sont à exécuter à la racine du projet :
l’emplacement du fichier pom.xml
5
9. Le POM minimal
La racine du projet : <project>
La version du modèle de pom ( <modelVersion> ) : 4.0.0 pour Maven 2.x
L’identifiant du groupe auquel appartient le projet : <groupId>
◦ Généralement commun à tous les modules d’un projet
L’identifiant de l’artifact à construire: <artefactId>
◦ Généralement le nom du module du projet sans espace en miniscules.
La version de l’artefact à construire <version> : Souvent SNAPSHOT sauf lors de la release
Le type d’artefact à construire: <packaging> : p om, jar, war, ear
< project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion > 4.0.0 </ modelVersion >
< groupId > org.bp </ groupId >
< artifactId > reclamations </ artifactId >
< version > 0.0.1-SNAPSHOT </ version >
<packaging> jar </packaging>
</ project >
6
10. Caractéristiques du projet
Description du projet
◦ Informations diverses
Dépendances du projet:
◦ Liste des librairies utilisées
◦ Précision du scope des librairies
◦ Exclusion des dépendances transitives
7
11. Phase de la construction du projet
Phase de la construction :
◦
◦
◦
◦
Agencement des répertoires : Structure du projet
Tâches (Gols)
Gestion des ressources du projet
En grande partie configurée par défaut
Gestion des plugins (Optionnel)
◦ Utilisation des plugins existants
◦ Tâches personnalisés (Possibilité de créer de nouveau
plugin)
Gestion des rapports (Optionnelle)
◦ Créer des rapports à générer
◦ Utilisation des plugins dédiés
8
12. Organisation des répertoires
Maven propose une structure de fichier
complète. Il s'agit de la configuration par
défaut mais elle est surchargeable.
Le principe général est de limiter le
répertoire racine du projet à trois
éléments:
◦ Le fichier de description du projet pom.xml ,
◦ Le répertoire src qui contient uniquement les
sources du projet
◦ et le répertoire target qui contient tous les
éléments créé par Maven.
9
13. Structure d’un projet maven
src/main/java :
◦ Contient les sources Java de l'application
src/main/resources
◦ Contient les ressources de l'application
src/main/webapp
◦ Contient les fichiers de l'application Web
src/test/java
◦ Contient les sources Java pour les tests unitaires
src/test/resources
◦ Contient les ressources pour les tests unitaires
src/site
◦ Contient les fichiers pour le site
target
◦ Répertoire de destination de tous les traitements Maven
10
15. Installation et configuration
Après avoir installé Maven2
Définir dans les variable d’environnement :
◦ JAVA_HOME= C:Program FilesJavajdk1.7.0_03
◦ M2_HOME= C:apache-maven-3.1.1
◦
path=%JAVA_HOME%bin;%M2_HOME%bin; ….
11
16. Générer la structure d’un projet
Dans un répertoire vide c :TP_MVN, lancez la commande :
◦ mvn archetype:generate
Vous obtenez un résultat similaire à ceci :
• Maven vous demande d’ entrer le numéro du type de projet pour le
que vous lui demandez de générer un squelette.
• Afin de vous repérer vous avez besoin de mettre dans un fichier tous les
numéros d’archetype.
• Pour cela faire : mvn archetype:generate > arch_nums.txt
• Puis patientez 10 secondes et puis appuyez 3 fois sur [Crtl]-C
• Vous pourrez ensuite faire des recherche dans le fichier arch_nums.txt.
12
17. Générer la structure d’un projet
si vous ne choisissez pas de numéro et que vous tapez ENTREE Maven
va créer le type correspondant au projet maven-archetype-quikstart
générant un squelette de projet Maven d’une application java simple.
Maven y crée un fichier source Main.java dans src/main/java et un fichier
test dans src/test.
Les autres information à fournir sont :
◦ groupId : ma.bp
◦ artifactId: Calcul
◦ version : par défaut (1.0-SNAPSHOT)
◦ package : ma.bp.calcul
Après confirmer les propriétés :Y
13
19. Editer le Projet Généré avec eclipse
Pour éditer le projet généré avec eclipse, nous avons
besoin de demander à maven de génerer les fichiers
.project et .classpath, nécessaires à un projet eclipse
Nous utilisons pour cela le plugin eclipse
Exécuter la commande suivante : mvn eclipse:eclipse
15
22. Création de la classe calcul
Dans ce projet, nous allons faire quelque chose de
très simple :
Une classe Calcul qui contient deux méthodes :
◦ Somme qui permet de retourner la somme de deux
nombres:
◦ Produit qui permet de retourner le produits de deux
nombre
Un Test unitaire qui permet de tester les deux
méthodes
Nous demanderons ensuite à maven de:
◦ compiler toutes les classes
◦ Exécuter tous les test unitaires
◦ Installer le jar du projet dans le repository local de maven
19
23. Code source de la classe CalculMetier
package ma.bp.calcul;
public class CalculMetier {
public double somme( double a, double b){
return (a+b);
}
public double produit( double a, double b){
return a*b;
}
}
20
24. Test Unitaire de la classe CalculMetier
package ma.bp.calcul;
import junit.framework.TestCase;
public class CalculMetierTest extends TestCase {
private CalculMetier calcul ;
protected void setUp() throws Exception {
super .setUp();
calcul = new CalculMetier();
}
public void testSomme() {
assertTrue( calcul .somme(6, 9)==15);
}
public void testProduit() {
assertTrue( calcul .produit(7, 4)==28);
}
}
21
25. Gols : Compilation, Test, Installation
Pour lancer la compilation de toutes les classes du
projet , on exécute la commande :
◦ mvn compile
Pour lanacer tous les test unitaires du ptojet:
◦ mvn test ou mvn test –Dtest=*Test
Pour installer le jar du projet :
◦ mvn install
22
29. Utilisation du jar généré dans un autre
projet web
Nous allons à nouveau générer un nouveau projet
maven cette fois de type webapp.
Dans le dossier TP_MVN, exécuter la commande :
◦ mvn archetype:generate
Cette fois ci, nous allons choisir le numéro 379
correspondant au modèle
org.apache.maven.archetypes:maven-archetype-webapp
Les autres information à fournir:
◦
◦
◦
◦
◦
La version du modèle :Valeur par défaut
groupId : ma.bp
artifactId : CalculWeb
Version : par défaut
package : ma.bp.web
26
31. Edition du projet avec eclipse
A nouveau, nous aurons besoin de demander à mayen
d’ajouter les fichiers .project et .classpath requis par
eclipse
Exécuter à nouveau la commande :
◦ mvn eclipse:eclipse
28
32. Structure du projet web généré
Dans ce projet nous aurons besoin du jar
du projet précédent.
Il faut donc ajouter sa dépendance dans
pom.xml
Pour mettre à jour le classpath ecplipse,
nous avons besoin de réuxécuter la
commande :
◦ mvn eclipse:eclipse
Ensuite actualiser le projet
< dependency >
< groupId > ma.bp </ groupId >
< artifactId > Calcul </ artifactId >
< version > 1.0-SNAPSHOT </ version >
</ dependency >
29
34. Page JSP : index.jsp
Maintenant , nous
allons créer une
simple page JSP
qui permet de
saisir un deux
nombre a et b
<%@ page import = "ma.bp.calcul.CalculMetier" %>
<%
double a=0; double b=0; double res=0;
String action=request.getParameter( "action" );
if (action!= null ){
a=Double.parseDouble(request.getParameter( "a" ));
b=Double.parseDouble(request.getParameter( "b" ));
CalculMetier metier= new CalculMetier();
if (action.equals( "Somme" )){ res=metier.somme(a, b); }
else { res=metier.produit(a, b); }
}
et d’afficher la
somme ou le
produit de ces
deux nombres.
%>
< html >
< body >
< form action = "index.jsp" method = "post" >
< table >
< tr >
< td > A: </ td > < td >< input type = "text" name = "a" value = " <%= a %> " /></ td >
< td > B: </ td > < td >< input type = "text" name = "a" value = " <%= b %> " /></ td >
</ tr >
< tr >
< td >< input type = "submit" value = "Somme" name = "action" /></ td >
< td >< input type = "submit" value = "Produit" name = "action" /></ td >
</ tr >
< tr >
< td > Résultat: </ td > < td > <%= res %> </ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
31
35. Génération du war : mvn install
Pour générer l’application web,
Executer la commande : mvn install
32
36. Déployer et tester le projet web
Pour démarrer tomcat 7 sur ligne de commande , il faut s’assurer que
les variables d’environnement JAVA_HOME est définie :
Ensuite lancer tomcat en exécutant le script startup.bat qui se trouve
dans le dossier bin de tomcat
33
40. Droits d’administration de tomcat
Pour accéder à l’interface
d’administration, il faut s’assurer que vous
avez défini dans le fichier
tomcat/conf/tmcat-uses.txt
◦ Le rôle manager-gui
◦ un utilisateur tomcat ayant ce rôle
Fichier tocat-users.txt
◦
◦
◦
◦
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,
admin-gui, manager-script"/>
38
41. Déploiement avec Maven
Pour déployer une application web dans le serveur tomcat en
utilisant maven, nous aurons besoin d’utiliser le plugin maven
tomcat7.
Déclaration du plugin dans pom.xml :
< build >
< finalName > CalculWeb </ finalName >
< plugins >
< plugin >
< groupId > org.apache.tomcat.maven </ groupId >
< artifactId > tomcat7-maven-plugin </ artifactId >
< version > 2.3-SNAPSHOT </ version >
< configuration >
< url > http://localhost:8080/manager/text </ url >
</ configuration >
</ plugin >
</ plugins >
</ build >
< pluginRepositories >
< pluginRepository >
< id > apache.snapshots </ id >
< name > Apache Snapshots </ name >
< url > http://repository.apache.org/content/groups/snapshots-group/ </ url >
< releases >
< enabled > false </ enabled >
</ releases >
< snapshots >
< enabled > true </ enabled >
</ snapshots >
</ pluginRepository >
</ pluginRepositories >
39
43. Autres Gols du plugin tomcat7
tomcat7:deploy : Deploy a WAR to Tomcat.
tomcat7:deploy-only : Deploy a WAR to Tomcat without forking the package lifecycle.
tomcat7:exec-war : Create a self executable jar file containing all necessary Apache Tomcat
classes. This allows for using just java -jar mywebapp.jar to run your webapp without needing
to install a Tomcat instance.
tomcat7:exec-war-only : Same as exec-war goal without forking the package lifecycle.
tomcat7:help : Display help information on tomcat7-maven-plugin.
tomcat7:redeploy : Redeploy a WAR in Tomcat.
tomcat7:redeploy-only : Redeploy a WAR in Tomcat without forking the package lifecycle.
tomcat7:run: Runs the current project as a dynamic web application using an embedded
Tomcat server.
tomcat7:run-war : Runs the current project as a packaged web application using an
embedded Tomcat server.
tomcat7:run-war-only: Same as run-war goal without forking the package cycle.
tomcat7:shutdown : Shuts down all possibly started embedded Tomcat servers.
tomcat7:standalone-war : Will create an executable war file with embedded Tomcat that is
also capable of being deployed elsewhere.
tomcat7:standalone-war-only : Will create an executable war file with embedded Tomcat
that is also capable of being deployed elsewhere.
tomcat7:undeploy : Undeploy a WAR from Tomcat.
41
44. Générer le site du projet
Exécuter la commande : mvn site
42