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

Maven Java Discussion :

Dependances entre projets (jar et war)- Eclipse


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Par défaut Dependances entre projets (jar et war)- Eclipse
    Bonjour,

    je travaille sur Eclipse Galileo avec Maven.

    J'ai les projets suivants :

    1 projet-web : une application web

    2 projet-services-api : api des services
    3 projet-services : implementation des services

    4 projet -components-api : api des composants
    5 projet-components : implementation des composants


    En toute rigeur, le projet web ne doit avoir une dependance qu'avec le projet services-api. A l'execution, les autres projets sont toutefois presents dans les librairies de l'application web.

    Le projet services a une dependance avec services-api et components-api.


    J'ai de grandes difficultes a savoir comment configurer le pom (et classpath?) de ces 5 projets afin que :
    - dans Eclipse, au cours du dev, on ne puisse pas utiliser une classe d'une couche basse dans une couche superieure (ex: classe du projet Services dans le projet web)
    - dans Eclipse, si on lance l'application web sur un serveur, l'application web fonctionne.
    - dans Hudson ou en ligne de commande, que je puisse creer un build de mon application web via Maven et que le war inclut toutes les librairies necessaires.


    J'ai l'impression que tout le monde doit avoir gere, ou a gerer ce genre de configuration...mais, meme apres de nombreuses lectures sur le web, ca ne m'apparait pas trivial.

    Merci de votre aide!

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Par défaut
    Bonjour

    Une piste de solution, non testée, comme çà:
    Utiliser le scope runtime pour les dépendances d'implémentations dans maven.

    Dans Eclipse faire des exclusions dans les classes exportées par les projets.

    A+

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Par défaut
    Tu as donc les modules suivants:
    - web
    - services-api
    - services
    - components-api
    - components

    Avec les dépendances suivantes :
    - components → components-api
    - services→ services-api
    - services->components-api
    - web→services-api
    Normalement, quand on a ce type d’architecture, nous avons non pas une webapp en déploiement mais deux ou trois webapp en déploiement.

    Ainsi, le packaging naturel pour ce type d’architecture est d’avoir 3 war:
    - war1 : inclut le module web et sa dépendances vers services-api
    - war2 : inclut le module services et sa dépendance vers services-api
    - war3 : inclut le module components et ses dépendances components-api et services-api

    Le packaging Maven des modules web, services et components serait de type war.
    Dans Eclipse, tu aurais 3 instances de Tomcat avec chacun une seule webapp.
    Les 3 war communiquent par le protocole d’échange que tu auras définie et en fonction de ton framework ( par exemple par Http).

    Ensuite, si tu veux maintenant un seul war a déployer, le mieux est soit de créer un nouveau module incluant toutes les dépendances de tous les modules, soit de créer un profil Maven au niveau du projet Web afin de créer un seul war et donc de dépendre a la fois de services-api mais aussi de compents-api et de leurs implémentations respectives.

    Cette solution est la seule que je vois afin d’assurer dans le développement une isolation des couches.
    Sinon l’autre solution est d’avoir au niveau du développement dans Eclipse, le module Web qui inclut toutes les librairies (permettant de déployer a travers WTP un seul war) et c’est Maven qui valide l ‘architecture de dépendances.
    Mais donc, il te faut lancer Maven régulièrement ou une personne ayant une casquette d’intégrateur lance cette vérification.
    Dans tous les cas, comme tu le vois, il te faut faire un choix.

Discussions similaires

  1. Besoin d'aide: dependance entre projets
    Par jlassiramzy dans le forum Maven
    Réponses: 6
    Dernier message: 28/11/2011, 21h45
  2. Dependance entre JAR de projet
    Par foxrol dans le forum Maven
    Réponses: 3
    Dernier message: 01/09/2009, 10h26
  3. [Ganymede] Dependance entre projet
    Par FreshVic dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/09/2008, 11h09
  4. dependances entre projets
    Par MASSAKA dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 20/02/2008, 00h02
  5. Réponses: 1
    Dernier message: 18/05/2007, 20h06

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