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 :

Compiler et exclure certains fichiers


Sujet :

Maven Java

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

    Informations forums :
    Inscription : mars 2003
    Messages : 98
    Points : 46
    Points
    46
    Par défaut Compiler et exclure certains fichiers
    Bonjour à toutes Zé à tous...

    J'ai écrit un pom qui compile correctement grâce au plug in "maven-compiler-plugin".

    J'obtiens un beau *.jar à la fin.

    Mais ce que je voudrais ce serait deux archives *.jar. La première qui rassemble toute une série de classes abstraites (et d'interfaces) et une autre qui recense les classes implémentées.

    c'est à dire : /src/main/java/pipo/molo contient les classes abstraites

    et /src/main/java/pipo/molo/impl comporte les implémentations.

    Au moyen de maven-compiler-plugin (entre les balises <build></build>) j'ai essayé <excludes><excludes> mais je me fait insulté!!!

    ce serait vraiment cool si quelqu'un avait une (bonne) idée sur la chose...

  2. #2
    Membre habitué Avatar de marcxa44
    Profil pro
    Inscrit en
    mai 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : mai 2007
    Messages : 202
    Points : 142
    Points
    142
    Par défaut
    essaie de faire deux pom.xml différents pour construire deux jars.
    Dans chacun des pom.xml tu exclu les fichiers que tu ne veux voir à l'intérieur.
    Xav

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

    Informations forums :
    Inscription : mars 2003
    Messages : 98
    Points : 46
    Points
    46
    Par défaut
    j'apprécirais grandement que tu m'indiques comment exclure certaines parties de l'arborescence, merci d'avance.

  4. #4
    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 : 43
    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 Frederik
    j'apprécirais grandement que tu m'indiques comment exclure certaines parties de l'arborescence, merci d'avance.
    La théorie maven voudrait que tu en fasses deux projets indépendant, un contenant l'API et l'autre l'implémentation.

    Bien entendu, le deuxième utilisera le premier....

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

    Informations forums :
    Inscription : mars 2003
    Messages : 98
    Points : 46
    Points
    46
    Par défaut
    Ok...effectivement... c'est plutôt futé de faire deux projets...
    Mais mon problème reste la façon de l'implémenter dans le POM.

    Je ne sais pas comment exclure des répertoires src/main/java/......./autres_repertoires les répertoires src/main/java/......./autres_repertoires/impl/

    C'est à dire que le premier projet doit générer une archive avec uniquement des classes abstraites et des interfaces, et le second doit juste générer une archive avec les implémentations des premières classes et interfaces

    La commande <exclude> du plugin "maven-compiler-plugin" n'a pas été concluante.

  6. #6
    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 : 43
    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 Frederik
    Ok...effectivement... c'est plutôt futé de faire deux projets...
    Mais mon problème reste la façon de l'implémenter dans le POM.
    Faut faire deux POMs, tout simplement. Et deux arborescences, avec deux repertoires src/main/java contenant l'un les interfaces, l'autre l'implémentation.

    Après, tu peux faire un troisième POM pour le parent.

    Cf : http://java.developpez.com/faq/maven...projet#projet1


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

    Informations forums :
    Inscription : mars 2003
    Messages : 98
    Points : 46
    Points
    46
    Par défaut
    Ok je vais tenté cette approche...

    Sinon j'ai à peine commencé une autre façon de faire qui a l'air interressante.

    Au moyen du plugin "maven-compiler-plugin" entre les balises <configuration> j'ai inséré une balises <excludes> <exclude> qui me permet d'exclure certains fichiers et d'autres balises <includes><include > qui me permettent comme leur nom l'indique de faire l'inverse.

    De toute façon je ferai les deux solutions. Si quelqu'un a déjà tenté cette approche je suis preneur du rretour d'expérience.

    PS: Je n'utilise pas maven brut de décoffrage, je passe par Maestro. On dirait que la balise <module> il est pas très fan d'ailleurs....

  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 : 43
    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 Frederik
    PS: Je n'utilise pas maven brut de décoffrage, je passe par Maestro. On dirait que la balise <module> il est pas très fan d'ailleurs....
    Tu m'étonnes un peu avec cen genre de remarques... Mais on va bien voir si emmanuel est d'accord avec toi.

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

    Informations forums :
    Inscription : mars 2003
    Messages : 98
    Points : 46
    Points
    46
    Par défaut
    Pareil que toi!!! moi aussi j'admets que j'ai un doute... mais je n'ai pas eu le temps de faire plusieurs tentatives....

    Je ne pourrais faire ces tests que demain... Aujourd'hui je ne suis pas sur mon poste...

    Sinon Merci pour vos conseils.

    A vrai dire ce qui me dérange dans la solution que vous proposez tous (même si elle me parrait pas trop mal) c'est qu'il faut remanier toute la belle organisation des repositories SVN que j'ai mis derrière.

    En effet, chaque fois que je lance un "build", un check out de la base svn est fait avant...

    Et tout modifier maintenant pourquoi pas, mais ça me semble un peu lourd du côté SVN... Mais si il n'y a pas d'autres solutions alors pourquoi pas...

    Donc l'idée c'est de se rapprocher au maximum de la "Solution idéale" en modifiant le moins possible la base SVN

    Merci encore pour les infos...

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : mai 2006
    Messages : 1 172
    Points : 1 524
    Points
    1 524
    Par défaut
    Citation Envoyé par Frederik
    PS: Je n'utilise pas maven brut de décoffrage, je passe par Maestro. On dirait que la balise <module> il est pas très fan d'ailleurs....

    Quelle est pour toi la différence entre maven et celui intégré dans Maestro?
    La seule différence entre les deux est l'adresse du repository central.

    La balise ,module. fonctionne TRES bien dans maven, il suffit de l'utiliser dans un pom.xml ayant le packaging définit à "pom". Un pom de type jar, war, ear... ne peux inclure des modules.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : mai 2006
    Messages : 1 172
    Points : 1 524
    Points
    1 524
    Par défaut
    Par définition, un projet maven ne doit créer qu'un et un seul artifact sauf cas exceptionnel comme le type ejb qui génère un ejb jar et un jar client.

    Une application multi-artifact doit respecter cette architecture:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ROOT
       - pom.xml   =>packaging=pom
       - module1
           -pom.xml
       - module2
           -pom.xml
    Avec cette séparation, la gestion des dépendances est correcte et surtout il n'ya aucun risque d'ajouter la mauvais classe dans le mauvais jar et de créer des liens entre classes non autorisés, par exemple entre une classe abstraite et une implémentation.

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

    Informations forums :
    Inscription : mars 2003
    Messages : 98
    Points : 46
    Points
    46
    Par défaut
    Finalement vous aviez raison (comme c'est étonnant...).
    Un module qui contient les API et un autre les implémentations celà semble très correct (en tout cas ça fonctionne).

    J'ai essayé de ne faire qu'un seul fichier pom quand même (un peu SM sur coup là...) au moyen des <profiles> et des <excludes> et <includes>.

    Bilan: celà devient vite indigeste. En plus le plug-in maven-installer-plugin lorsqu'il copie la première archive il la renomme du nom de l'artifactId avant de la placer dans le repository. (alors que dans le répertoire target il y avait un tout autre nom d'archive jar)

    Si bien qu'il y a un problème lorsque la deuxième archive doit etre traitée. Elle écrase la première et s'appelle elle même...

    Je ne sais pas si j'ai été claire mais grosso modo... la solution du découpage en module fonctionne


    Merci à tous

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

Discussions similaires

  1. find : exclure certains fichiers
    Par sergeh dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/02/2014, 13h56
  2. Réponses: 12
    Dernier message: 06/08/2010, 15h56
  3. Exclure l'affichage de certains fichiers
    Par nomasis dans le forum Langage
    Réponses: 7
    Dernier message: 13/12/2008, 13h25
  4. Réponses: 3
    Dernier message: 13/02/2008, 22h32
  5. Réponses: 2
    Dernier message: 22/05/2006, 16h21

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