IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Sencha Maven et java WebApp


Sujet :

Ext JS / Sencha

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut Sencha Maven et java WebApp
    Bonjour

    J’ai fait un premier prototype de webApp java qui inclus le front fait avec Ext-JS le tout sous Maven.

    Sencha fournit un outil pour faire le build d'une application Ext-JS.
    C’est un outil puissant en ligne de commande. Il est plutôt bien fait.
    Voir Sencha CMD sur le site de Sencha.

    Mais il n'est pas du tout dans l'esprit de Maven.
    Et il ne prévoit rien pour faire le build du backend qui va avec l'appli.
    Ce n'est pas un reproche. ce n'est pas le but.

    Cet outil offre une interface avec ANT.
    Pour faire un build d'une WebApp Ant a prévu les tâches nécessaires depuis longtemps.

    Lorsque le projet prend de l'ampleur, gérer les dépendances et tout le build devient complexe.
    J'utilise pour ça Maven avec une forge qui gère en automatique les nightly builds.

    Me restait à combiner Sencha cmd avec maven.

    C’est donc chose en partie faite.
    J'ai posté sur les forums de Sencha une solution pour lancer le build d'une application Ext-JS avec Maven.
    Ce qui est une première étape.

    Mais pour builder une webApp complète j'ai cherché à arranger la chose.

    Le premier problème que j'ai rencontré avec Sencha (mais c'était pareil avec gulp grunt etc.)
    Comment passer les propriétés du build Maven à l'outil de build du frontend*?

    Le second problème (là aussi rencontré avec gulp grunt etc) c'est que le build du frontend mélange allègrement les fichiers source les fichiers de travail les fichiers générés.

    Le troisième problème la présence de la Lib Ext-JS complète dans le dossier du frontend.

    pour résoudre le premier point (j'avais fait pareil avec les autres outils)
    j'ai placé les fichiers de travail du front dans un dossier ad hoc
    Lors du build maven il y a plusieurs étapes la première valide de descripteur du projet.
    la seconde est destinée à la génération de source (par exemple généré le source de classes java à partir d'une xsd)
    J'ai utilisé cette phase pour créer un dossier workspace dans e dossier de builds de maven.
    Puis copier tous les fichiers de travail en y injectant les propriétés maven.
    Il y a dans le build Sencha un 10ene de fichiers qui contiennent le nom de l'application. Avec cette solution ils sont générés automatiquement.
    Pour changer le nom il suffit de le changer dans maven.
    Même fonctionnement pour toutes les propriétés nécessaire à Sencha.

    pour résoudre le second, il m'a fallu me plonger dans les 50 fichiers de travail de Sencha (ce n'est pas un modèle du genre il y a beaucoup de répétitions)
    J’ai en corrélation avec le premier point séparé les dossiers sources des dossiers de travail et de la Lib.
    le travail se fait donc dans target/Sencha/workspace
    les sources sont dans src/main/front la Lib dans src/Lib

    Pour le troisième la séparation des dossiers du deuxième point a aidé à le solutionner.
    Le point important est qu’à priori le build Sencha n'intervient pas dans la Lib. Il ne fait que prendre les dépendances nécessaires.
    En le séparant j'ai pu éviter que maven ne parcoure toute la Lib pour rien. (dans mes premiers tests, il parsait 6800 fichiers).

    le build final fonctionne ainsi

    phase generate => création du workspace avec tous les params nécessaire.
    phase compile => appel de Sencha app buil qui place le résultat dans targert/webapp
    phase package => génération du war

    vous trouverez ici ce premier test
    https://github.com/sekaijin/sencha-sample-maven

    la structure du projet
    /Sencha modèle de fichier pour le build Sencha
    /src/main/frontend les fichiers de l'appli Ext-JS
    /src/main/webapp/WEB-INF les descripteur de la webApp java
    /src/main/java les fichiers du backend
    /src/main/ressources les fichiers qui seront embarqués dans le war
    /src/Lib/Sencha/ext la Lib Ext-JS on peut ainsi y placer aussi senchaTouch

    /target/classes les classes compilées
    /target/Sencha/workspace le dossier de travail de Sencha cmd
    /target/webapp le contenu de la webapp

    A+JYT

  2. #2
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Merci sekaijin pour exemple qui pourrait m'être utile assez vite je pense.
    # apt-get install freedom

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/01/2009, 18h11
  2. Création d'un war d'un projet maven de type webapp
    Par thierry_b dans le forum Maven
    Réponses: 1
    Dernier message: 14/01/2009, 17h56
  3. Réponses: 3
    Dernier message: 22/02/2007, 18h08
  4. Maven et Java ME
    Par spekal dans le forum Maven
    Réponses: 1
    Dernier message: 13/09/2006, 10h02
  5. [Maven 2] Java Web Start
    Par morice.ju dans le forum Maven
    Réponses: 11
    Dernier message: 17/08/2006, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo