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 2 - Version des plugin Maven


Sujet :

Maven Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut Maven 2 - Version des plugin Maven
    Bonjour

    J'ai une rapide question sur Maven et sur la specification des plugin Maven a utiliser dans un pom.xml.

    Je suis avec la version 2.2.1 de Maven.

    Dans le pom de mon projet, jai ceci
    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
    	<build> 
    	<plugins>
     
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
     
                    <executions>
     
                        <!-- tomcat conf directory -->
                        <execution>
                            <id>conf</id> 
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
    Il n'y a pas de numero de version precise.
    Je compile, tout se passe bien.

    Par contre, mon collegue a la version 2.0.8 de Maven.
    Lorsqu'il compile ainsi, il a l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] 'copy-resources' was specified in an execution, but not found in the plugin
    [INFO] ------------------------------------------------------------------------
    En regardant le plugin maven-resources-plugin, on voit que le goal copy-resources existe uniquement a partir de la version 2.3 du plugin.
    Or, par defaut, la version 2.0.8 de Maven utilise le plugin en version 2.2.

    Mon collegue me soutient qu'une bonne pratique de Maven consiste a toujours donner le numero de version a utiliser. Je suis daccord avec cette bonne pratique, par contre je ne sais pas si elle sappliquent aux plugins Maven?

    Doit-on reecrire le bout de code precedent en
    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
    	<build> 
    	<plugins>
    
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.3</version>
                    <executions>
                    
                        <!-- tomcat conf directory -->
                        <execution>
                            <id>conf</id> 
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
    Est-ce vrmt une bonne pratique indispensable?
    Je pense au contraire qu'il ne faut pas mettre un numero de version et plutot, changer la version de Maven et point barre.

    Qu'en pensez-vous?
    Nicolas
    Blogueur @ www.ABCArgent.com

  2. #2
    Membre éclairé

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Points : 794
    Points
    794
    Par défaut
    Effectivement, le goal copy-resources du plugin maven-resources-plugin existe que depuis la version 2.3
    Et la dernière version est la version 2.4.2
    http://maven.apache.org/plugins/mave...rces-mojo.html

    Avec Maven, si nous ne spécifions pas la version d’un plugin au moment de sa déclaration ( ou dans une section <pluginManagement> contenant les préférences de configurations des plugins), Maven va tenter de télécharger la dernière du plugin. Ainsi, ta chaîne de build n’est pas reproductible dans le temps puisque potentiellement entre deux build, ce n’est pas la même version de Maven qui est utilisé.


    Cette assertion est vraie pour l’ensemble des plugins Maven. Néanmoins, elle n’est plus vraie pour les plugins core de Maven depuis la version Maven 2.0.9. En effet, depuis cette version, la version des plugins core est fixée. Ceci grâce a une section <pluginManagement> définit dans le super POM (pom parent implicitement de tous les pom (descripteur Maven).

    Pour t’en assurer, il te suffit d’exécuter la commande mvn help:effective-pom depuis ton projet et la sortie console comportera le contenu de ton pom fusionnée avec tous les pom.xml de ta hiérarchie (y compris le pom virtuel Maven Super POM).

    Et tu as alors la sesction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <pluginManagement>
       <plugins>
        ....
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>2.3</version>
            </plugin>
       ...
          </plugins>
        </pluginManagement>

    Ainsi, avec un runner Maven 2.0.9, c’est la version 2.3 du plugin maven-resources-plugin qui sera utilisée.
    Si tu précises ta propre version, c’est ta version qui sera utilisée.

    En Maven 2.0.8, si tu ne précise pas de version, il va potentiellement toujours aller chercher le latest sauf si selon ta configuration Maven et repository manager, il a pris la version qu’il avait téléchargée.

    Si tu veux connaître dans ce dernier cas, la version du plugin qui est utilisé, il te suffit d’invoquer la commande
    mvn help:describe -Dplugin=org.apache.maven.plugins:maven-resources-plugin a la racine de ton projet.

    Donc maintenant, dans les prochaines versions de Maven, que vat-il se passer ?

    Sûrement, les prochaines versions de Maven vont déclarer dans le Maven super POM,une version supérieure du plugin maven-resourceces-plugin.
    Normalement les nouvelles versions assurent un compatibilité avec les versions précédentes mais ...
    Ainsi, si tu veux assurer une compatibilité de ta chaîne de build, il va te falloir spécifier une version de tes plugins dont tu personnalises la configuration par défaut, y compris des plugins core, dont dans ton cas, le plugin maven-resources-plugin.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    Merci poru ta reponse super précise, j'ai bien fait de poser la question de manière détaillée. Désolé pour le temps de reponse j'avais pas vu la notification dans ma boite email.

    Tu mas donne pas mal de details utiles, cest bien note.

    Merci beaucoup!!!
    Nicolas
    Blogueur @ www.ABCArgent.com

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

Discussions similaires

  1. Installation des plugins Maven
    Par moonp dans le forum Maven
    Réponses: 1
    Dernier message: 25/04/2013, 22h58
  2. Version des plugins courants pour Maven 2.0.9
    Par ThomasEscolan dans le forum Maven
    Réponses: 4
    Dernier message: 30/08/2011, 11h46
  3. [Maven-Continuum-Eclipse] Version des plugins
    Par P'tite_Lily dans le forum Maven
    Réponses: 0
    Dernier message: 10/09/2009, 17h29
  4. Réponses: 0
    Dernier message: 24/07/2009, 16h59
  5. Réponses: 1
    Dernier message: 27/02/2009, 16h06

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