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 :

[Maven] Construire un WAR à partir de 2 projets


Sujet :

Maven Java

  1. #1
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut [Maven] Construire un WAR à partir de 2 projets
    Bonjour,

    Je précise que je suis loin d'être un expert en Maven. J'utilise Maven 2 ici.
    Voilà mon problème :

    J'ai un premier projet, appellons-le fondations par exemple.
    Il s'agit d'une webapp. Créer le .WAR n'est pas très complexe avec Maven, voilà le début de mon fichier pom.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <project>
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>romain</groupId>
    	<artifactId>fondations</artifactId>
    	<packaging>war</packaging>
    	<name>Projet Fondations</name>
    	<version>1.0</version>
    	...
    	<build>
    		...
    		<finalName>fondations</finalName>
    	</build>
    </project>
    Pour faire simple, j'ai zappé les parties concernant les dépendences et quelques autres informations.

    Donc quand je fais "mvn package", j'obtiens au final le fichier fondations/target/fondations.war

    Maintenant, et c'est là que les choses se gâtent, j'ai un deuxième projet, appellons-le maison.
    Le principe c'est que maison construit un WAR à partir du squelette de WAR créé par fondations.
    Donc l'idéal pour moi, serait que lorsque je demande de faire maison.war, Maven procède comme suit:

    1. Il compile le projet fondations.
    2. Il crée le fichier fondations.war, qui contient les sources compilées de fondations ainsi que tous les fichiers de ce projet (JSP, html, XML, images, etc.)
    3. Il "dézippe" le fondations.war dans maison/target/, et y ajoute tous les fichiers (Java, JSP, html, XML, images, etc.) de maisons.
    4. Il recompile l'ensemble dans un fichier maison.war.

    (à la limite, si je peux me passer de l'étape de compression des fichiers du projet fondations en .war, ce serait pas mal).

    Donc pour répondre à ce problème, je me suis dit qu'il fallait sans doute définir le projet fondations comme parent du projet maison... Est-ce que cela résoudra effectivement mon problème ?
    Si oui, comment dois-je écrire mon fichier pom.xml pour le projet maison ?
    Voilà ce que j'ai tenté pour l'instant (mais qui ne marche pas, vous vous en doutez) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <project>
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>romain</groupId>
    	<artifactId>maison</artifactId>
    	<parent>
    		<groupId>romain</groupId>
    		<artifactId>fondations</artifactId>
    		<version>1.0-SNAPSHOT</version>
    		<relativePath>d:/dev/fondations/</relativePath>
    	</parent>
    	<packaging>war</packaging>
    	<version>1.0</version>
    	<name>Projet Maison</name>
    	...
    	<dependencies>
    		<dependency>
    			<groupId>romain</groupId>
    			<artifactId>fondations</artifactId>
    			<version>1.0</version>
    			<type>pom</type>
    		</dependency>
    		...
    	</dependencies>
    	...
    </project>
    Merci pour votre aide.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu veux qu'une webapp depend d'une autre ?

    tu as besoin de quel genre de fichiers de la premiere application dans la deuxième ?

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    En fait, mon projet fondations construit un "bout" d'une webapp (en gros, les objets génériques, qui sont des fichiers Java, des fichiers JSP, du XML, etc.).

    Ensuite, pour "finaliser" le tout, mon projet maison vient y ajouter du code spécifique (qui sont de nouvelles classes Java, de nouveaux fichiers XML, de nouvelles JSP). Il ajouterait donc ces fichiers au squelette créé par fondations.

    Pour éviter que vous me posiez la question : Non, je ne peux pas les réunir au sein d'un seul projet. Tout simplement parce que mon but est de pouvoir faire différents projets "maisons", qui se basent tous sur le projet fondations.
    C'est un peu comme si je faisais un héritage du projet fondations

    Est-ce plus clair maintenant ?
    Y a-t'il un moyen simple de faire cela avec Maven ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    deux projet war qui ont le meme parent .

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Bah d'un point de vue théorique, j'ai bien compris.
    C'est le côté pratique qui me pose problème.

    Comment définir correctement mes fichiers pom.xml ?
    Il me faut, semble-t'il également définir un fichier pom.xml global (qui se trouve à la racine de mes deux projets), non ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    il faut créer un projet maven et lui donner un groupId et artifactId, dans le pom de celui ce tu=u definis les autres projets fils, voir syntaxe sur le site de maven..

    dans les deux pom fils, tu declare le projet parent..<parent/>

    le projet parent peut contenir juste le fichier pom..

  7. #7
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Bon, voilà ce que j'ai fait :

    J'ai ça dans mes répertoires :

    dev/pom.xml
    dev/fondations/pom.xml
    dev/maisons/pom.xml

    Voilà le contenu de ces fichiers :

    dev/pom.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>romain</groupId>
        <version>1.0-SNAPSHOT</version>
        <artifactId>monprojet</artifactId>
        <packaging>pom</packaging>
        <modules>
            <module>fondations</module>
            <module>maison</module>
        </modules>
    </project>
    dev/fondations/pom.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <project>
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>romain</groupId>
    	<artifactId>fondations</artifactId>
    	<packaging>war</packaging>
    	<parent>
    		<groupId>romain</groupId>
    		<artifactId>monprojet</artifactId>
    		<version>1.0-SNAPSHOT</version>
    	</parent>
    	...
    </project>

    dev/pom.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <project>
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>romain</groupId>
    	<artifactId>maison</artifactId>
    	<parent>
    		<groupId>romain</groupId>
    		<artifactId>monprojet</artifactId>
    		<version>1.0-SNAPSHOT</version>
    	</parent>
    	<packaging>war</packaging>
    	...
    	<dependencies>
    		<dependency>
    			<groupId>romain</groupId>
    			<artifactId>fondations</artifactId>
    			<version>1.0</version>
    			<type>war</type>
    		</dependency>
    	...
    	</dependencies>
    Lorsque je compile fondations, pas de soucis.
    Maintenant, que je fais un mvn package du projet maison, j'obtiens une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [INFO] Failed to resolve artifact.
     
    GroupId: romain
    ArtifactId: monprojet
    Version: 1.0-SNAPSHOT
    Où est le problème exactement ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  8. #8
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par romaintaz
    Où est le problème exactement ?
    un petit mvn install pour mettre tout le monde d'accord?

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/11/2014, 00h25
  2. Réponses: 6
    Dernier message: 18/10/2014, 10h37
  3. Réponses: 2
    Dernier message: 13/11/2013, 20h15
  4. Construire une bibliothèque à partir d'un projet
    Par dj_the_kid dans le forum Outils
    Réponses: 4
    Dernier message: 22/10/2011, 12h50
  5. un projet maven à partir d'un projet web
    Par benyahia4 dans le forum Maven
    Réponses: 0
    Dernier message: 25/02/2010, 15h44

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