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 :

[mvn] multimodules et packaging


Sujet :

Maven Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut [mvn] multimodules et packaging
    Bonjour à tous,

    J'ai un projet nommé toto constitué de plusieurs modules toto-core et toto-impl.
    J'essaye déspérement depuis quelques heures de générer un jar de toto qui contienne toto-core.jar et toto-impl.jar. J'ai bien trouvé comment faire avec assembly, mais j'aimerais pouvoir le faire de facon a générer proprement les fichiers md5, sha1... comme le fait la commande deploy.
    Je commence a douter un peu que ca soit possible...

    Donc, quelqu'un sait-il comment procéder pour générer le jar d'un projet constitué de modules pour déposer le-dit jar dans un repository?

    Merci d'avance,

    Charles
    Je m'en fous, je suis fou!

  2. #2
    Membre éclairé

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Points : 794
    Points
    794
    Par défaut
    Ton besoin ne semble pas très clair.
    Il est possible que ton problème vienne d'un mauvais découpage.
    Sinon, tu peux mettre toto-impl comme dépendance de toto-core et utiliser le maven-shade-plugin pour obtenir un "uber-jar" des deux.

  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
    Tu ne peux pas (sans passer par l'assembly j'entends).

    En réalité, ton application est composée de 3 artifacts Maven :
    toto.pom
    toto-core.jar
    toto-impl.jar

    A priori, je pense que toto-impl a toto-core comme dépendance. Ce que tu peux faire, c'est par exemple utiliser le plugin shade afin de créer un toto-impl.jar contenant également les classes de toto-core.
    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
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Merci pour vos réponses.
    Effectivement, mon projet est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    toto
    |-- toto-core
    | |-- pom.xml
    |-- toto-impl
    | |-- pom.xml
    |-- pom.xml
    toto-impl dépend de toto-core.
    Ce que j'aimerais, c'est faire un toto.jar qui contient toto-core et toto-impl. J'ai vu sur certain site qu'il fallait créer un module factice (toto-fact) qui déclare des dépendances vers toto-core et toto-impl.
    Que pensez-vous de cette solution?

    En attendant, je vais jeter un coup d'oeil du côté de shade.
    Je m'en fous, je suis fou!

  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
    Personnellement, je suis pas super pour l'idée d'un faux module juste pour ça.
    Dans ton cas, tu as à mon avis 2 solutions :

    1. Soit créer avec shade un toto-impl.jar contenant les classes de toto-core.

    2. Soit créer un toto.jar avec assembly, qui est destiné (entre autre) à ça...
    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
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Ok pour assembly, j'ai déjà 2 descriptors qui font ca. La limite que je vois, c'est que je n'obtiens pas les fichiers nécessaires à l'intégration du jar dans le repository (comme ceux que j'ai en faisant Mais peut-être que je ne fais pas bon usage de ces commandes: l'idée derrière, c'est que si qqun veut dépendre de toto qu'il mette dans ces dépendances simplement "toto" et plutot que préciser "toto-impl" (qui n'est pas très équivoque).
    Je m'en fous, je suis fou!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Bon, j'ai trouvé la réponse à ma question, qui finalement était devant mes yeux depuis le début!
    En utilisant assembly et la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mvn deploy:deploy-file -DgroupId=toto -DartifactId=toto -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
    je fais exactement ce dont j'ai besoin.

    Merci à vous,
    Charles
    Je m'en fous, je suis fou!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Je me permet de réouvrir cette discussion, puisque mon projet à évoluer et le paliatif trouvé il a quelques temps ne me satisfait plus trop...

    Voici à quoi ressemble mon projet actuellement:

    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    choco
    |-- pom.xml
    |-- choco-solver
    |       |-- pom.xml
    |       |-- choco-kernel
    |       |       |-- pom.xml
    |       |       `-- src
    |       `-- choco-cp
    |               |-- pom.xml
    |               `-- src
    |-- choco-tools
    |       |-- pom.xml
    |       |-- choco-db
    |       |       |-- pom.xml
    |       |       `-- src
    |       |-- choco-parsers
    |       |       |-- pom.xml
    |       |       `-- src
    |       `-- choco-cli
    |               |-- pom.xml
    |               `-- src
    |----choco-visu
    |       |-- pom.xml
    |       `-- src
    |----choco-contribs
    |       |-- pom.xml
    |       `-- src
    |----samples
    |       |-- pom.xml
    |       `-- src
    `----dadcop-tracer
            |-- pom.xml
            `-- src
    Actuellement, j'ai 2 descriptors: le premier dans choco/src/main/assembly/descriptor.xml et un second dans choco/choco-solver/src/main/assembly/descriptor.xml.

    Le problème que je rencontre est qu'en lancant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn package assembly:assembly deploy
    dans choco, le 2ème descriptor n'est pas lu et le 2nd jar jamais produit. J'ai du mettre en place un script qui se place dans ./choco/choco-solver, lance la commande, fait une copie résultat, se place dans ./choco, lance la commande et colle le résultat précédent. C'est pas top!

    Savez-vous si il est possible, en une seule commande, de lire les 2 descriptors et de produire tous les jars?

    D'avance merci,

    CP

    PS: j'essaie d'automatiser ces commandes pour les intégrer à mon serveur d'intégration continu Hudson.
    Je m'en fous, je suis fou!

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/08/2010, 15h09
  2. erreur sur mvn -e package
    Par pcouas dans le forum Maven
    Réponses: 2
    Dernier message: 20/11/2009, 13h35
  3. Package devC++
    Par Fl0r3nt dans le forum Dev-C++
    Réponses: 15
    Dernier message: 29/10/2003, 14h42
  4. [Packages] Problème d'organisation
    Par lolo... dans le forum JBuilder
    Réponses: 5
    Dernier message: 22/04/2003, 13h05
  5. Vue Packages
    Par ced dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/04/2003, 08h32

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