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 2] inclusion de dépendances dans l'artefact produit


Sujet :

Maven Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 8
    Points
    8
    Par défaut [maven 2] inclusion de dépendances dans l'artefact produit
    Bonjour à tous,

    J'ai 2 projets maven (un client (jar) et un serveur(war)) que j'ai réunis au sain d'un même projet parent (sous forme de module). Cependant j'ai une partie du code qui est commune dans ces 2 projets, et donc pour éviter la redondance j'ai donc rajouté un 3 ème module ("commun") à mon projet parent. Puis j'inclu cette partie commune dans le client et le serveur sous forme de dépendance jar.

    Mon problème est le suivant, dans l'artefact jar du client produit je voudrais retrouver les sources du jar "commun" . Pour le serveur qui est une webapp, pas pro cela fonctionne (le jar commun est bien dans le war).

    Ma question comment inclure une dépendance jar quand l'artefact produit est aussi un jar?

    Merci d'avance

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé une solution partielle en utilisant le plugin "maven-assembly-plugin"

    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
     
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-assembly-plugin</artifactId>
       <executions>
         <execution>
           <phase>package</phase>
           <configuration>
             <descriptorId>jar-with-dependencies</descriptorId>
           </configuration>
           <goals>
             <goal>assembly</goal>
           </goals>
         </execution>
       </executions>
    </plugin>
    le problème c'est que j'ai maintenant 2 jars qui sont crées dans le rep target , l'un ( client-1.0-SNAPSHOT-jar-with-dependencies.jar) incluant toutes les dépendances et les class clients et l'autre(kpi_client-1.0-SNAPSHOT.jar) que les class clients.
    je ne voudrais concerver que le premier jar, une solution à proposer?

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Personne n'aurait une autre solution pour inclure les dépendances du projet dans l'archive(jar) généréré ??

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Bijour
    Bijour,

    je ne sais pas si ce que je vais te dire pourra t'aider, mais d'apres ce que j'ai compris, tu as besoin de recuprer le contenu d'un jar et de l'integrer dans un autre jar, c'est bien cela... Et bien, à ma connaissance, il y a un plugin qui s'appelle maven-dependency-plugin qui te permet d'effectuer un "unjar" sur un jar et de specifier le repertoire ou sera envoye le contenu de ce jar...

    Voila, @ bientot

  5. #5
    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 gg_rhum
    Personne n'aurait une autre solution pour inclure les dépendances du projet dans l'archive(jar) généréré ??
    La solution que tu utilises (assembly) est la bonne et l'unique solution.

    Maven produit, par définition, pour chaque projet un par contenant les classes compilées de ce projet (et uniquement ce projet). Ce jar est celui qui est mis en place dans le repository, avec le pom associé (qui permet de résoudre les dépendances).
    Tu ne peux pas modifier ce comportement, qui est le fondement même de la gestion des dépendances dans Maven.

    L'option qui t'ai donné est de rajouter un jar supplémentaire (avec l'assembly) qui est lui aussi déployé sur le référentiel (et tu peux même le réutiliser, mais c'est des détails un peu plus techniques...).

    Donc ta solution est la bonne (au sens de Maven) et la seule.

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour vos réponses,

    Je suis heureux de voir que je fais bonne route !

    Cependant mon problème n'est pas encore vraiment résolu dans la mesure ou mon but est de faire des tests fonctionnels sur le nouveau jar produit.
    J'ai donc besoin de réutiliser ce jar en tant que dépendance dans maven

    L'option qui t'ai donné est de rajouter un jar supplémentaire (avec l'assembly) qui est lui aussi déployé sur le référentiel (et tu peux même le réutiliser, mais c'est des détails un peu plus techniques...).
    Sans vouloir etre trop insistant, aurais-tu un lien ou une doc sur ces détails un peu plus techniques ?

    Jérôme

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Rebonjour,

    Alors voila j'ai trouvé une solution à mon problème sans utiliser assembly, en utilisant le maven-dependency-plugin préconisé par MasterJediHouari . Ce plugin me permet d'unpacker mon jar (dépendance) dans un répertoire, moi j'ai donc choisi le répertoire src/main/resources et je le lance a la phase generate-resources .
    Et ainsi mon nouveau jar produit contient bien les class de la dépendance voulue.

    Voila, merci a tous

  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 gg_rhum
    Sans vouloir etre trop insistant, aurais-tu un lien ou une doc sur ces détails un peu plus techniques ?
    Utilises l'attribut classifier des dépendances, qui permet de selectionner un autre jar que le jar 'principal' du projet.
    cf : http://maven.apache.org/ref/current/...ass_dependency

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/04/2012, 14h17
  2. Réponses: 2
    Dernier message: 19/03/2012, 08h48
  3. Réponses: 2
    Dernier message: 01/10/2010, 15h34
  4. gwt-maven-plugin - Ordre des dépendances dans le classpath
    Par guymage dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 28/01/2010, 23h40
  5. Inclure dépendances dans WAR (maven)
    Par dialloma dans le forum Maven
    Réponses: 8
    Dernier message: 05/06/2008, 11h08

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