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 :

Gérer plusieurs projets avec Maven 2


Sujet :

Maven Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Gérer plusieurs projets avec Maven 2
    Bonjour,

    J'utilise Maven 2 sur plusieurs projets et je souhaiterai pouvoir lancer automatiquement la génération du jar d'un projet A lorsque je fais par exemple un "install" d'un projet B.

    Le projet A contient des classes utilitaires et est utilisé par plusieurs projets. Faut-il obligatoirement passer par un projet multi-module ? Dans ce cas, comment faire pour les autres projets qui utiliseraient ce projet A ?

    Merci d'avance pour votre aide.

  2. #2
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    en gros tu veux gérer un dépendance entre deux projets.

    http://java.developpez.com/faq/maven/?page=dependances

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse.

    En effet je cherche à gérer une dépendance entre 2 projets.

    J'ai déclaré dans le pom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <dependency>
    <groupId>xxx.xxx.projet-a</groupId>
    <artifactId>projet-a</artifactId>
    <version>1.0</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    Mais je suis obligé de lancer manuellement un "install" sur le projet A pour que le jar soit mis à jour dans mon repo local. Il y a un moyen de le faire automatiquement lorsque je fais un "install" de mon projet B ?

    Merci d'avance.

  4. #4
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Justement j'aimerai éviter le multi module, le projet qui contient des classes utilitaires est utilisés par d'autres projets.
    Il faudrait alors créer un module contenant ce projet pour chaque projet ?!

    J'ai peut-être mal saisi le principe du multi module sous Maven... Enfin si quelqu'un peut m'éclairer là dessus, merci d'avance !

  6. #6
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Le mieux est de gérer les cycles de vie de tes différent projet séparément.
    Si ton projet A est partagé par plusieurs autres projet, tu n'a pas a le recompiler a chaque fois.
    Compile le séparément une fois quand tu le modifie et tous les autres projets pourront en bénéficier.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    sinon il est aussi possible de simplement faire un multimodule qui ne sert qu'à toi pour t'aider à la compilation.

    il suffit de créer dans un dossier un pom multimodule, et dans les balise <module></module> tu met le chemin complet vers les projets A et B. En effet, maven n'exigent pas que les modules des projets multimodules soient dans un sous répertoire

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci pour vos réponses.

    Pour le multimodule en local, ça reste compliqué à gérer sur un projet qui est partagé vu que dans le pom il faut définir le parent.

    En attendant je vais faire comme Mobius l'a indiqué, gérer le cycle de vie des différents projets séparément.

    Sinon, est-il possible de lancer avec une tâche ant une commande maven ?
    De cette façon, j'aurai juste à lancer cette tâche depuis le pom du projet (via un profile).

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par thewarlock Voir le message
    Merci pour vos réponses.

    Pour le multimodule en local, ça reste compliqué à gérer sur un projet qui est partagé vu que dans le pom il faut définir le parent.
    faux, maven ne lie pas le parent (indiqué dans la balise parent) au tag module (indiqué dans la balise modules). Le multimodule, c'est regrouper des opération (compilation etc), les parents c'est faire hériter un pom d'un autre.
    Ainsi tu peux avoir une structure flat, dans lequel un module regroupe les autre mais pour lesquel le parent est un autre pom ou encore carrément le pom racine de maven. De même tu peux avoir plusieurs multimodules qui regroupent les même modules.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 106
    Points : 70
    Points
    70
    Par défaut
    joyeux 9000ème message tchize!

Discussions similaires

  1. [GTW/Cypal] Utiliser plusieurs projet avec cypal
    Par SaiBot dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 26/01/2009, 12h17
  2. Erreur lors de la compilation d'un projet avec maven
    Par cococinelle dans le forum Maven
    Réponses: 2
    Dernier message: 07/04/2008, 09h47
  3. Gérer plusieurs fenetres avec l'API Windows
    Par jimay dans le forum Windows
    Réponses: 5
    Dernier message: 17/05/2007, 11h47
  4. Réponses: 1
    Dernier message: 06/03/2007, 20h29
  5. Réponses: 15
    Dernier message: 27/09/2006, 11h46

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