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 :

Regrouper plusieurs jar dans une dépendance


Sujet :

Maven Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut Regrouper plusieurs jar dans une dépendance
    Bonjour,

    J'ai différents modules, chacun ayant besoin de X jar.
    Y a t'il un moyen de regrouper tous ces jar pour n'avoir plus qu'une dépendance?
    Car pour l'instant, je me tape environ 50 dépendances par projet, certains jar étant communs à plusieurs modules.
    J'ai regardé Dependency Mechanism, mais d'après ce que j'ai compris (), un jar reste une dépendance à déclarer dans le pom...

    Merci

  2. #2
    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 : 46
    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
    Oui en effet.
    C'est bien mieux ainsi, pour pouvoir gérer les dépendances, c'est quand même plus pratique.

    Quel est le but exact de ton envie de n'avoir qu'une seule grosse dépendance ? Faciliter la distribution de ton application ?

    Il existe des outils comme FatJar par exemple, dont le but est de créer, après la compilation de ton projet un seul JAR contenant ton projet ainsi que ses dépendances. Cela pourrait il répondre à ton besoin ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Non, ce n'est pas pour le déploiement.
    Actuellement, on build avec ant, et on a des répertoires avec des jar (commun, gui, ...) et on défini simplement le classpath en pointant sur un ou des répertoires.
    Donc c'est pratique car si on a juste besoin des jar communs, on indique ce répertoire.
    En gros, je voudrai savoir si c'est possible avec Maven, même si du coup, on perds la notion de version de tel ou tel jar. Mais déclarer chaque jar utilisé dans le pom de chaque module, je trouve ça assez lourd (bon, après, si c'est le principe de Maven, je le ferai, je ne veux pas non plus faire quelque chose de laid)

  4. #4
    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 : 46
    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
    Faire ça avec Maven, je te confirme que c'est laid, très laid même (pas qu'avec Maven d'ailleurs).

    Effectivement, il est recommandé* de saisir chaque dépendance dans le fichier pom.xml. C'est un peu fastidieux, mais une fois que c'est fait, c'est magique !
    Ca évite les problèmes de "tiens, un JAR de log4j, mais c'est quelle version déjà ?" ou encore "Bizarre, chez moi ça compile mais pas chez toi...", etc.


    * Je dis recommandé parce qu'on peut très bien gruger ce système, mais non seulement c'est laid, mais en plus c'est pas beau (et ça a de forte chance de poser des problèmes un jour ou l'autre).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Ce dont je me doutais est donc vrai.
    Merci, bon, bah j'ai de quoi m'occuper

  6. #6
    Membre habitué Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Points : 164
    Points
    164
    Par défaut
    A savoir que tu n'est pas obliger de tout declarer dans ton pom.
    Maven gerant les dependances transitives tu n'as besoin que des dependances directs et maven te ramene le reste des dependances

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Le problème, c'est que je ne sais pas qui est dépendant de qui
    D'ailleurs, ça n'existerait pas une sorte d'outil permettant d'aller chercher dans un jar sa version et le package? Parce que là, j'en ai une centaine...

  8. #8
    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 : 46
    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
    Citation Envoyé par xilay Voir le message
    Le problème, c'est que je ne sais pas qui est dépendant de qui
    Pour être sûr que le message de DanielW33 a bien été compris :

    Pour Maven, il ne te faut définir que tes propres dépendances, c'est-à-dire celles dont ton projet utilise directement. Maven va se charger de son côté de récupérer les dépedances de ces dépendances là, ce sont les dépendances transitives.
    Un exemple :
    J'ai besoin d'envoyer des mails via mon application. J'intègre donc la librairie javax.mail dans mes dépendances. Or cette dernière a besoin de javax.activation. Je n'ai pas besoin d'indiquer cette dernière dans mon pom, et j'indiquerais donc uniquement javax.mail.

    Il te faut donc "seulement" trouver quelles sont les dépendances directes de ton projet... Ce qui n'est pas toujours simple je l'admets

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    J'ai justement bien compris, et je suis incapable de savoir les liens entre les différents jar, donc hormis les notres, tout le reste, c'est la grosse inconnue.
    Et là je suis en train de tous les ouvrir pour récupérer les groupID et les versions, je sens que la journée va être longue...

  10. #10
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    C'est souvent le problème qu'on rencontre dans la migration de projet ant vers Maven 2. Comme ant, ne gère pas (de facon aussi précise au moins) les dépendances, dans la majorité des cas, le responsable du projet n'est pas capable de dire qu'elles sont les dépendances directes et transitives et dans quelle version.

    Le problème comme indiqué est de savoir comment retrouver ces informations notamment via un outil. Une idée est peut-être de se tourner vers le plugin dependency et le goal analyze. Pour cela il suffit de taper la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn org.apache.maven.plugins:maven-dependency-plugin:2.0-alpha-5-SNAPSHOT:analyze
    Nous avions proposé une amélioration (qui a été acceptée et intégrée) pour ajouter un rapport dans le site web. Vous avez un exemple sur le site web du plugin.

    Rémy

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

Discussions similaires

  1. Regrouper plusieurs lignes dans une seule
    Par djinpark1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2013, 14h26
  2. [Toutes versions] Macro regroupant plusieurs classeurs dans une seule feuille
    Par lisandjo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/04/2012, 08h52
  3. Regrouper plusieurs vecteurs dans une seule matrice
    Par usto2005 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/04/2011, 19h20
  4. regrouper plusieurs lignes dans une colonne
    Par Satch dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/08/2009, 12h39
  5. [AC-2007] Regrouper plusieurs cellules dans une seule
    Par J_help dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 20/07/2009, 19h47

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