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 :

Maven version selon profil


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut Maven version selon profil
    Bonjour,

    Je rencontre actuellement une problématique.

    Je dois gérer plusieurs versions (V3.0, V2.0). C'est à dire qu'on travaille avec un éditeur qui gère plusieurs branches. Mais notre code fonctionne avec les deux branches. C'est pourquoi selon le profil de compilation, on récupère la version 3 ou 2 de l'éditeur

    En gros, j'aimerai faire mvn clean install -P v3 ou mvn clean install -P v2
    et selon le profil, changer la version du pom parent.

    Voici mes poms.

    Pom parent :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       <groupId>com.test</groupId>
        <artifactId>test</artifactId>
        <version>3.0-SNAPSHOT</version>
        <packaging>pom</packaging>

    pom fils
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          <parent>
            <groupId>com.test</groupId>
            <artifactId>test</artifactId>
            <version>3.0-SNAPSHOT</version>
        </parent>

    Le souci, c'est que selon le profil on doit changer la version. Si on compile en V2, la version devient 2.0-SNAPSHOT et 3.0-SNAPSHOT sinon.

    Le problème c'est que je n'ai pas envie de changer la version de tous les pom fils à la main.

    J'ai essayé de supprimer la version parent du fils, il me sort comme erreur parent.version is missing.

    J'ai l'impression qu'il n'y a pas moyen de faire un truc propre ?

    En fait, ce que j'aimerai c'est changer la version parent selon le profil et qu'on ait pas besoin de modifier la version parent des poms fils et qu'ils héritent automatiquement.

    Est-ce possible ?

    Merci par avance.

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Je sais qu'il existe des propriétés utilisées pour les dependency pour permettre d'utiliser les mêmes versions par tout de junit, etc...

    C'est de la forme :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dependencies>
      <dependency>
        <groupId>toto</groupId>
        <artifactId>toto-artifact</artifactId>
        <version>${totoVersion}</version>
      </dependency>
    </dependencies>
    <properties>
      <totoVersion>1.0</totoVersion>
    </properties>

    Aucune idée si ça marche aussi sur la version du pom ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  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 : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Hello,

    Ce n'est pas possible de ne pas mettre la version du pom parent pour une raison simple. La première chose que va faire Maven, c'est de constuire le "vrai" pom.xml (l'"effective pom") en récupérant les informations des pom parents. Une fois ce pom effectif construit, il va pouvoir le lire et analyser ce qu'il doit faire, et lire si besoin les différents profils existants.
    Du coup, ça signifie qu'il doit avant toute chose connaitre le parent. Donc il n'est pas possible de rendre dynamique cette information.

    Pour ton problème, le mieux, à mon avis, c'est d'utiliser le plugin Versions (http://mojo.codehaus.org/versions-maven-plugin/) qui en une ligne de commande te permet de changer les versions de tous tes pom.xml. Comme ça tu n'auras besoin que de 2 lignes de commandes pour builder. La première pour définir la version, la seconde pour builder le projet.

    Une autre idée serait d'utiliser un pom.xml alternatif (donc d'avoir 2 pom.xml au final), il suffit ensuite de lancer la commande mvn -f pom-v2.xml ... pour utiliser un autre pom que le pom.xml. Mais je ne suis pas sûr que cela fonctionnera car il y a des multi-modules et je ne pense pas que Maven lire les pom-v2.xml de chaque sous-module. En plus, ça oblige à maintenir 2 pom.xml à chaque fois...

    Une dernière idée : au lieu de dire que ton projet a pour parent la version 2 ou la version 3, tu crées une nouvelle version du parent, la 4 dont dépendra toujours ton projet. Ensuite, dans ce pom parent, tu définis 2 profils : le premier, version-v2, contient tout ce que contient le pom dans sa version 2 actuelle. L'autre profil, version-3, contient ce que contient le pom dans sa version 3 actuelle. Comme ça, tu pourras effectivement activer la version que tu veux en activant le profil adéquat.
    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 éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    merci pour ces informations.

    Je suis entrain d'essayer la première solution qui me paraît bien. Je ne connaissais pas ce plugin versions.

    Le souci, c'est que lorsque je lance la commande mvn versions:set -DnewVersion=3.0-SNAPSHOT, j'obtiens cette erreur :

    Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.0:set (default-cli) on project Test: only whitespace content allowed before start tag and not \uef (position: START_DOCUMENT seen \uef... @1:1) -> [Help 1]

    Quand je lance un mvn clean install, ça fonctionne, quand je lance la commande mvn versions:display-dependency-updates, ça fonctionne aussi, c'est uniquement quand je lance la commande mvn versions:set -DnewVersion=3.0-SNAPSHOT que ça plante.

    vous avez une idée ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    j'ai enregistré le fichier sur pspad, ça marche maintenant.

    je vais essayer d'analyser le résultat.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    ça à l'air d'être bon !


    J'en ai profité pour supprimer la version des pom fils, ils hériteront ceux du père.

    merci encore !

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

Discussions similaires

  1. Timeline : la démo de la nouvelle version du profil FaceBook
    Par Hinault Romaric dans le forum Actualités
    Réponses: 13
    Dernier message: 24/01/2012, 11h52
  2. [maven 2] Build Profiles
    Par Lynk HIROSUE dans le forum Maven
    Réponses: 11
    Dernier message: 04/08/2006, 10h23

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