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: Même numéro de version pour 3 projets et accès à ce numéro dans le code de l'appli.


Sujet :

Maven Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Points
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Par défaut MAVEN: Même numéro de version pour 3 projets et accès à ce numéro dans le code de l'appli.
    Bonjour,

    Je développe en GWT (Ajax, techno web, etc. ...) et je voudrai faire la chose suivante:

    J'ai 3 projets Maven qui doivent avoir le même numéro de version et :
    - je ne peux pas en faire un seul et même projet,
    - je ne peux pas non plus leur mettre le même parent ... donc je ne peux pas utiliser ${parent.version}

    Quelle est la meilleure solution pour arriver à mes fins ??
    • Utiliser le plugin "Maven Remote Resources" ?
    • Faire un POM en déclarant mes sous-projets en tant que modules ? Déclarer une propriété dans ce "sur-module" et prier pour que j'y ai accès dans les modules ?
    • ou une autre solution ... ?



    De plus, ce numéro de version doit être accessible dans mon code Java.
    Je pense qu'il doit être possible de demander à maven de remplir un fichier .properties à partir du POM d'un projet avec un plugin mais je ne sais pas lequel ... ?


    Merci d'avance aux Maven masters pour leurs réponses éclairées

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Points
    48 804
    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
    Points : 48 804
    Par défaut
    même numéro de version: vu tes conditions, à la main, c'est le plus propre et le plus compatible avec le système de releases maven. Tout autre système pourrait entraîner une compilation non reproductible, ce qu'on souhaite éviter avec maven. Rien ne t'empeche de faire un script que tu lance une fois pour incrémenter les 3 projets d'un coup. Ce n'est pas comme si on changeait le numéro de version trois fois par jour en général.


    pour avoir l'info depuis le code, maven fait déjà. Regarde dans le jar généré, META-INF/maven/<tongroupe>/<tonprojet>/, tu trouvera un pom.xml et un pom.properties.

    dans un properties ici, j'ai par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Generated by Maven
    #Fri Jun 11 13:43:08 CEST 2010
    version=1.3-SNAPSHOT
    groupId=xxxxxx.shark
    artifactId=XXX-shark-component-jsf

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Points
    595
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Par défaut
    Salut,

    La solution de Tchize me plait bien. On a une bonne visibilité de la version puisqu'elle est affichée dans chaque pom en dur.

    D'autres solutions un peu plus automatisées sont possibles mais n' apportent pas forcément davantage de valeur ajoutées. Je pense que c'est aussi une question de préférence.
    Tu peux par exemple dans le settings.xml, ajouter à un profil actif une variable globale indiquant la version actuelle des projets.
    Tu utiliseras cette variable dans chacun de tes poms pour indiquer la version du projet.
    Avec ce genre de config, le settings.xml doit être commité (ce qui n'est pas une mauvaise chose) et il constituera le point d'entrée unique de changement de version.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Points
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Par défaut
    Merci pour vos commentaires

    En effet, je vais essayer de laisser les numéros en dur dans les balises <version> ... Maven 2 & 3 hurlent bien fort quand ils trouvent une expression en lieu et place d'un n° de version.

    J'avais bien vu que je pouvais activer des profils mais vu que nous avons tous un settings.xml différent (pour des raisons 'historiques'), je ne peux pas utiliser cette solution.

    En ce qui concerne la n° de version accessible dans mon programme, je ne peux hélas pas non plus lire le fichier pom.properties pour l'afficher à l'écran. En effet, je programme en GWT (Google Web Toolkit) et certaines ressources texte (fichiers de propriétés représentant des messages à afficher à l'écran par exemple ) ne sont pas incluses dans mon code compilé en Javascript si elles ne sont pas accompagnées d'un classe bien particulière et il FAUT qu'elles soient dans src/main/java.

    Pour faire en sorte que mes propriétés soient correctement renseignées, j'ai utilisé deux plugins maven:
    • org.codehaus.mojo.build-helper-maven-plugin. Et plus particulièrement le goal 'parse-version' qui vous donne le n° de version du projet sous forme de propriété Maven utilisable dans le POM.
    • com.google.code.maven-replacer-plugin.maven-replacer-plugin. Il permet de remplacer du texte dans un fichier par ce que vous voulez ...


    La section "plugins" de mon POM est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <plugins>
      <plugin>
        <!-- Sert à récupérer le n° de version de ce projet sous forme de propriété Maven -->
        <!-- Cette propriété sera utilisée par le plugin maven-replacer-plugin (cf. plus bas dans ce POM) -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <id>parse-version</id>
            <goals>
              <goal>parse-version</goal>
            </goals>
            <configuration>
              <propertyPrefix><nom du projet></propertyPrefix>
            </configuration>
          </execution>
        </executions>
      </plugin>
    
      <plugin>
        <!-- Ecrit le numéro de version de ce projet dans un fichier properties  -->
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>maven-replacer-plugin</artifactId>
        <version>1.3.1</version>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>replace</goal>
            </goals>
          </execution>
        </executions>
    		
        <configuration>
          <file>target/classes/<Qualifier du fichier properties></file>
          <replacements>
            <replacement>
              <token>numVersionProjet=(.*)</token>
              <value>numVersionProjet=${<nom du projet>.osgiVersion}</value>
            </replacement>
          </replacements>
        </configuration>
      </plugin>
    </plugins>
    Et dans src/main/java/<Qualifier du fichier properties>, j'ai ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # Cette propriété est remplie par Maven (goal: compile).
    # NE PAS TOUCHER !! (de toutes façons, cette valeur sera remplacée par le build Maven).
    numVersionProjet=Poste de développement
    Après un maven compile, le fichier dans le répertoire 'target' ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Cette propriété est remplie par Maven (goal: compile).
    # NE PAS TOUCHER !! (de toutes façons, cette valeur sera remplacée par le build Maven).
    numVersionIntegrationACT=0.8.0-SNAPSHOT
    J'aurai tout aussi bien pu lancer les plugins maven sur le goal 'initialize' et leur indiquer de modifier le fichier se trouvant dans [I]src/main/java [I]. Mais à ce moment là Eclipse ne peut quasiment plus accéder au fichier properties (il est tout le temps désynchronisé) et je ne peux presque plus modifier les autres propriétés de ce fichier !!

    Voilà ... Merci pour vos conseils et j'espère que la solution que j'expose ci-dessus servira à d'autres ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Points
    595
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Par défaut
    Waou waou waou
    Intéressant le plugin google

    C'est normal qu'avec ces paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <token>numVersionProjet=(.*)</token>
    <value>numVersionProjet=${<nom du projet>.osgiVersion}</value>
    le remplacement de valeur dans le fichier properties est remplacé la clé numVersionProjet par la clé numVersionIntegrationACT?

    Si tu essayes de valoriser ton fichier <Qualifier du fichier properties> à partir des variables prédéfinis Maven, ca donnait une erreur ?
    Je connais pas trop la syntaxe de la balise value, mais je me risque pour l'exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <token>numVersionProjet=(.*)</token>
    <value>numVersionProjet=${project.version}</value>

Discussions similaires

  1. Numéro de version pour Delphi XE7 update 1
    Par free07 dans le forum EDI
    Réponses: 3
    Dernier message: 22/05/2015, 12h32
  2. Utiliser le même look and feel pour plusieurs projets
    Par benbauf dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 03/09/2010, 17h59
  3. [Lazarus] Récupérer le numéro de version de mon projet
    Par Gouyon dans le forum Lazarus
    Réponses: 10
    Dernier message: 18/03/2010, 16h15
  4. [D6 - FB 1.5] Numéro de version pour la base ?
    Par Lucien dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/11/2006, 14h38
  5. Gestion du numéro de version d'un projet
    Par Chris B dans le forum EDI
    Réponses: 5
    Dernier message: 22/11/2004, 16h08

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