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 :

Sous super-pom ?


Sujet :

Maven Java

  1. #1
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut Sous super-pom ?
    Bonjour,

    j'essaye de définir des paramêtres qui doivent être dans le fichier pom.xml (developers, distributionManagement, ...) dans un pom générique.

    Ce fichier peut-il aller dans le dossier .m2 ? à côté de settings.xml ?

    Si non, où puis-je placer ce fichier pour éviter de devoir définir ces valeurs pour chaque projet ?

    Merci d'avance.

  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
    Par défaut
    C'est un projet à part entière. Tu lui définis un packaging de type pom, un groupId, un artifactId et une version. Par ex:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>my.company</groupId>
        <artifactId>companyparent</artifactId>
        <version>1</version>
        <packaging>pom</packaging>
     
        ... // Toutes tes propriétés
    </project>

    Tu l'installes (mvn install) dans ton repository, puis dans tes projets enfants, tu lui fais référence dans le noeud parent :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <project>
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>caf.opm.calculator</groupId>
            <artifactId>parent</artifactId>
            <version>2</version>
        </parent>
        <artifactId>mon-projet</artifactId>
        ...
    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

  3. #3
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    le pom parent peut être n'importe où ? ou es-ce qu'il doit obligatoirement être un dossier au dessus ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le pom parent est récupéré de la même manière que les dépendances. via les repositories. Maintenant dans le tag parent on peux définier location pour préciser dans quel dossier le trouver si il est pas dans les repos.

  5. #5
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    Terrible ! c'est génial, j'aime maven de plus en plus

    Par contre j'ai une question :

    j'aimerais connaître l'arborescence type (ou la plus facile à utiliser) pour 2 projets P1 et P2, qui utiliseraient une même librairie L ?
    ....../projets
    ....../-> pom.xml
    ....../-> P1
    ....../------> pom.xml
    ....../-> P2
    ....../------> pom.xml
    ....../-> L
    ....../------> pom.xml

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a priori, si P1 et P2 n'ont rien à voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    projects
      company-root
        pom.xml (info sur la société et ses repository internes)
      P1
        pom.xml (avec dépencande vers L en version x.y.z)
      P2
        pom.xml (avec dépencande vers L en version a.b.c)
      L
        pom.xml

  7. #7
    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
    Par défaut
    C'est un peu vague comme contexte.

    Maven propose un concept d'aggrégation. En gros, ça te permet de diviser ton projet en plusieurs modules, généralement liés. Exemple : j'ai une application web, et je désire la diviser en trois : la partie commons, la partie services et la partie web.
    Dans cet exemple, je vais établir une structure de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    project
      +- pom.xml
      +- commons
      |   +- pom.xml
      +- services
      |   +- pom.xml
      +- web
          +- pom.xml
    Dans le pom.xml de services, je vais définir une dépendance vers commons.
    Concernant le pom.xml à la racine, il s'agira d'un pom d'aggrégation. Il va définir en son sein la liste des modules :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <modules>
            <module>commons</module>
            <module>services</module>
            <module>web</module>
        </modules>

    (le "nom" de ces modules est en fait le nom du répertoire le contenant)

    L'intérêt de l'aggrégation, c'est que Maven va exécuter toute commande lancée au niveau de la racine sur chaque module. Bien entendu, Maven va faire ça intelligemment (grâce au Reactor), c'est-à-dire qu'il va déterminer l'ordre d'exécution. Dans mon exemple, Maven va compiler dans l'ordre commons, puis services (car services a une dépendance sur commons).

    Dans mon exemple, si je lance la commande mvn clean install à la racine, ça revient à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cd commons
    mvn clean install
    cd ..\services
    mvn clean install
    cd ..\web
    mvn clean install
    cd ..
    A noter qu'un pom d'aggrégation et un pom parent sont deux concepts différents mais pas forcément exclusifs. Le pom.xml à la racine peut ainsi être le pom.xml d'aggrégation et le pom parent de tous les sous-modules.

    Pour en revenir à ta question, la structure sur le disque (et donc sur ton CVS/SVN/...) va dépendre du lien entre les projets. Par exemple, si la librairie L est utilisée par projet1 et projet2 mais qu'elle n'a pas forcément de lien avec ces projets (par ex. si L est une librairie d'utilitaires), alors il n'y a pas de raison qu'elle se trouve dans le même répertoire que ces autres projets.
    De toutes façons, pour Maven, ça n'a pas plus d'importance que ça, vu qu'il va toujours passer par le repository local (ou distant) pour chercher une dépendance...

    Bon, j'espère t'avoir apporté les éléments permettant de répondre à ta question.
    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

  8. #8
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    Merci beaucoup a vous 2, c'est génial.

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

Discussions similaires

  1. settings , super pom , pom
    Par javadevelopper dans le forum Maven
    Réponses: 6
    Dernier message: 18/11/2009, 10h40
  2. [MAVEN2] creation possible d'un super POM?
    Par bassemeco dans le forum Maven
    Réponses: 7
    Dernier message: 18/01/2008, 10h49
  3. Super pom d'entreprise
    Par Jibee dans le forum Maven
    Réponses: 3
    Dernier message: 17/09/2007, 13h14
  4. [Maven] Localisation du Super POM
    Par DanielW33 dans le forum Maven
    Réponses: 2
    Dernier message: 28/11/2006, 15h24
  5. Super classes et sous-classes/Méthodes
    Par smag dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 23h10

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