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 :

Gestion de ressources externes


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Par défaut Gestion de ressources externes
    Bonjour,

    Je suis coincé sur un point probablement tout bête avec Maven. Je suis en train de basculer un soft sous Maven. Mon soft est décomposé en plusieurs projets Maven, gérés par dépendances. En gros ces projets sont "core" (la librairie du moteur), "server", et "admin" (le client lourd). Ces trois projets seront combinés au moment de générer l'installeur du produit.

    A ce niveau-là, tout va bien. Cependant, ma librairie moteur a besoin de ressources externes non-java (par exemple pour générer un PDF avec FOP, il lui faut des modèles). Je ne sais pas comment gérer ces ressources externes, sachant que si je les gère comme des ressources Maven, elles se trouveront incluses dans le JAR de la librairie, ce qu'il ne faut surtout pas.

    J'avais pensé mettre ces ressources comme des projets Maven autonomes (sans code source Java donc), les mettre en dépendance de ma librairie, et demander à Maven de décompacter les ressources lors d'une phase de build (par exemple validate). Cependant, ce n'est pas automatique, donc si je travaille sous Eclipse, je dois d'abord lancer un build pour avoir mes ressources disponibles. Et surtout, le répertoire META-INF, avec le manifest et tout sont décompactés aussi.

    Au final je suis frustré de ne pas trouver de doc là-dessus, alors que ça me parait être quelque chose d'assez fondamental que d'avoir des fichiers à rendre disponibles à l'exécution. Comment est-on censé gérer ça avec Maven ?

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Le plugin assembly peut sans doute t'aider : il permet de créer une archive (tar, zip, etc.) contenant les ressources que tu veux.

    Tu peux ainsi mettre automatiquement dans ton archive :
    - les jars nécessaires à ton projet
    - les ressources externes, en dehors de ces jars

    Je te renvoie donc à http://maven.apache.org/plugins/maven-assembly-plugin/
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Par défaut
    Bonjour,

    Merci pour cette réponse. J'ai bien vu le plugin assembly, et j'ai commencé à l'étudier puisque je savais que j'allais en avoir besoin pour générer l'installeur du produit.

    Si j'ai bien compris, tu me suggères donc de laisser ces ressources externes dans le projet qui les utilise, et de les déplacer où il convient seulement au moment de générer l'installeur. C'est effectivement plus facile pour moi, d'autant que cette solution fait que le produit fonctionnera s'il est lancé depuis les sources dans Eclipse.

    Mais si je souhaite faire comme je l'ai évoqué, c'est-à-dire éclater ces ressources en sous-projets ? Est-ce une bonne idée, déjà, et surtout, dans ce cas, comment rendre les ressources automatiquement accessibles si le projet est lancé depuis Eclipse ? Je ne suis pas particulièrement attaché à cette solution, mais c'est juste pour savoir si c'est possible, parce que ça peut être pratique, et mon chef est assez emballé par cette idée.

    Merci d'avance .

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par Eric73 Voir le message
    Mais si je souhaite faire comme je l'ai évoqué, c'est-à-dire éclater ces ressources en sous-projets ? Est-ce une bonne idée, déjà, et surtout, dans ce cas, comment rendre les ressources automatiquement accessibles si le projet est lancé depuis Eclipse ? Je ne suis pas particulièrement attaché à cette solution, mais c'est juste pour savoir si c'est possible, parce que ça peut être pratique, et mon chef est assez emballé par cette idée.
    Concernant l'éclatement des ressources en sous-projets, cela ne posera pas de problème avec le plugin assembly : il est justement conçu pour reconstituer les projets Maven "multi-modules" (après une configuration correcte, évidemment).

    Sous Eclipse, je pense que si m2clipse est installé et que les fichiers pom des différents modules sont écrits correctement, il gèrera correctement la résolution des ressources au lancement (comme pour les librairies/ressources qui ne sont que décrites dans le pom.xml).

    Maintenant, n'ayant pas testé sur un cas aussi tordu, peut-être que je fais un peu trop confiance à m2clipse : je ne peux pas garantir cette deuxième affirmation.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Par défaut
    Le problème d'éclater en projets distincts, comme je l'ai dit, c'est le décompactage. Si elles sont sous forme de projets dont dépend mon projet princiapl, mes ressources vont être mises dans des JARs. La résolution de dépendance de Maven, couplé au plugin m2eclipse, vont faire que le JAR va être automatiquement ajouté au classpath... et c'est tout. Or je veux, pour que cela fonctionne à l'exécution depuis Eclipse, que les fichiers de ressources soient présents au bon endroit sous forme décompactée.

    un cas aussi tordu
    C'est tordu d'avoir des fichiers externes ? Ca me semblait être un cas extrêmement courant, mais il faut croire que si c'est difficile à gérer avec Maven sous Eclipse, je devais me tromper.

    Merci pour cette réponse en tout cas.

  6. #6
    Membre émérite

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Par défaut
    L'idée de mettre les ressources dans un ou plusieurs artefacts Maven, puis de rajouter
    des dépendances vers ces artefacts , et ensuite de les extraire au besoin, est une bonne idée. Le répertoire META-INF n'est pas un problème car celui-ci est optionnel au moment de la création du jar.

    Concernant le fait que cela nécessite un build Maven afin que tes ressources Eclipse soit synchronisé, cela n'est pas non plus un problème. Et c'est souvent courant (très employé dans de nombreux projets open source par exemple)
    Ton build automatise ta construction mais ce n'est pas le cas de ton IDE. Ainsi la configuration dans Eclipse n'a p lieu d'être automatisé. Ta chaîne de build doit être construite au-dessus de ton outil de build (ici Maven) et c'est à ton IDE de s'adapter.
    Si cela passe par une configuration manuel, tu dois faire cette configuration manuelle. Libre à toi ensuite, de sauvegarde cette configuration pour éviter de la refaire à chaque fois.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/10/2013, 12h33
  2. Gestion des ressources
    Par BainE dans le forum MFC
    Réponses: 2
    Dernier message: 11/01/2006, 11h55
  3. [DLL] Gestions des ressources textes (StringTable)
    Par Clorish dans le forum Langage
    Réponses: 1
    Dernier message: 26/05/2005, 16h50
  4. [Swing] Gestion des ressources
    Par speedster dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 13/11/2004, 15h09

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