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 :

Comment gérer des versions différentes des plugins ?


Sujet :

Maven Java

  1. #1
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut Comment gérer des versions différentes des plugins ?
    Bonjour,

    J'ai mis en place Maven pour générer mon update site, qui est composé de plusieurs plugins.
    Si tout ce beau monde à le même numéro de version : plugins, feature, et pom tout va bien !
    si d'aventure un plugin et son feature a un numéro de version différent des autres ... ça ne va plus !

    Comment je veux différencier ce numéro de version de plugin et le numéro de version du pom ?
    D'avance merci

  2. #2
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Normalement chaque plugin a grosso modo son propre cycle de vie et donc son propre numéro de version qui n'est pas dépendant des autres.

    Tu as un exemple précis (comme ton pom.xml) qu'on puisse t'aider?

  3. #3
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Bonjour eulbobo !

    alors voici mon pom parent :
    Code XML : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
     
      <groupId>com.bla.bla.bla</groupId>
      <artifactId>eclipseplugin</artifactId>
      <version>1.3.0-SNAPSHOT</version>
      <packaging>pom</packaging>
     
      <properties>
      	<version>1.3.0</version>
      </properties>
     
      <repositories>
      	  	<repository>
        		<id>eclipse-kepler</id>
    			<layout>p2</layout>
    			<url>http://download.eclipse.org/releases/kepler</url>
      		</repository> 		
      </repositories>
     
      <modules>
      	<module>../fr.bli.bli.a</module>
      	<module>../fr.bli.bli.b</module>
      	<module>../fr.bli.bli.c</module>
      	<module>../fr.bli.bli.d</module>
        	<module>../fr.bli.bli.feature.a</module>
      	<module>../fr.bli.bli.feature.b</module>
      	<module>../fr.bli.bli.feature.c</module>
      	<module>../fr.bli.bli.feature.d</module>
      	<module>../fr.bli.bli.updatesite</module>
     
      </modules>
     
      <build>
        	<plugins>
          		<plugin>
            		<groupId>org.eclipse.tycho</groupId>
            		<artifactId>tycho-maven-plugin</artifactId>
            		<version>0.19.0</version>
            		<extensions>true</extensions>  
            		<configuration>
        				<source>1.7</source>
        				<target>1.7</target>
    				</configuration>        		    	
          		</plugin>
        	</plugins>
     
        	<pluginManagement>
    	    	<plugins>
    	    		<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
    	    		<plugin>
    	    			<groupId>org.eclipse.m2e</groupId>
    	    			<artifactId>lifecycle-mapping</artifactId>
    	    			<version>1.0.0</version>
    	    			<configuration>
    	    				<lifecycleMappingMetadata>
    	    					<pluginExecutions>
    	    						<pluginExecution>
    	    							<pluginExecutionFilter>
    	    								<groupId>org.eclipse.tycho</groupId>
    	    								<artifactId>
    	    									tycho-compiler-plugin
    	    								</artifactId>
    	    								<versionRange>
    	    									[0.19.0,)
    	    								</versionRange>
    	    								<goals>
    	    									<goal>compile</goal>
    	    								</goals>
    	    							</pluginExecutionFilter>
    	    							<action>
    	    								<ignore></ignore>
    	    							</action>
    	    						</pluginExecution>
    	    					</pluginExecutions>
    	    				</lifecycleMappingMetadata>
    	    			</configuration>
    	    		</plugin>
    	    	</plugins>
    		</pluginManagement>
    	</build>
     
    </project>

    et un exemple d'un pom enfant feature:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.bla.bla.bla</groupId>
        <artifactId>eclipseplugin</artifactId>
        <version>1.3.0-SNAPSHOT</version>
        <relativePath>../eclipseplugin/pom.xml</relativePath>
      </parent>
      <artifactId>fr.bli.bli.feature.a</artifactId>
      <packaging>eclipse-feature</packaging>
    </project>

    et un exemple de pom plugin :
    Code XML : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?xml version="1.0" encoding="UTF-8"?>
    <project
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>com.bla.bla.bla</groupId>
    		<artifactId>eclipseplugin</artifactId>
    		<version>1.3.0-SNAPSHOT</version>
    	  	<relativePath>../eclipseplugin/pom.xml</relativePath>
    	</parent>
    	<artifactId>fr.bli.bli.a</artifactId>
    	<packaging>eclipse-plugin</packaging>
    	<build>
    		<plugins>
    			<plugin>
    				<artifactId>maven-antrun-plugin</artifactId>
    				<version>1.1</version>
    				<inherited>false</inherited>
    			</plugin>
    		</plugins>
    		<pluginManagement>
    			<plugins>
    				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
    				<plugin>
    					<groupId>org.eclipse.m2e</groupId>
    					<artifactId>lifecycle-mapping</artifactId>
    					<version>1.0.0</version>
    					<configuration>
    						<lifecycleMappingMetadata>
    							<pluginExecutions>
    								<pluginExecution>
    									<pluginExecutionFilter>
    										<groupId>
    											org.apache.maven.plugins
    										</groupId>
    										<artifactId>
    											maven-antrun-plugin
    										</artifactId>
    										<versionRange>
    											[1.1,)
    										</versionRange>
    										<goals>
    											<goal>run</goal>
    										</goals>
    									</pluginExecutionFilter>
    									<action>
    										<ignore></ignore>
    									</action>
    								</pluginExecution>
    							</pluginExecutions>
    						</lifecycleMappingMetadata>
    					</configuration>
    				</plugin>
    			</plugins>
    		</pluginManagement>
    	</build>
    </project>

    tout (plugin et feature) est pour le moment en version 1.3.0.qualifier si j'en met un à 1.4.0.qualifier (fr.bli.bli.feature.a et fr.bli.bli.a) j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [ERROR] Cannot resolve project dependencies:
    [ERROR]   Software being installed: fr.bli.bli.feature.a.feature.group 1.3.0.qualifier
    [ERROR]   Missing requirement: fr.bli.bli.feature.a.feature.group 1.3.0.qualifier requires fr.bli.bli.feature.b.feature.group [1.3.0,1.3.1)' but it could not be found
    [ERROR]
    Merci

  4. #4
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Alors, pour le coup, on parle de version de module dans un projet maven MultiModule : techniquement, le problème ne vient pas des plugins utilisés par maven (même si tu es toi même en train de développer un plugin)


    Dans un projet multimodule, par convention, tous les modules héritent du numéro de version du pom parent. Ils sont tous liés au même endroit, ils ont tous le même numéro de version.
    (De la même façon, il faut éviter de redéclarer une propriété déjà existante, la version de ton projet, c'est 1.3.0-SNAPSHOT, pas 1.3.0 !)

    Si tu essayes d'augmenter la version d'un seul de tes modules, il ne sera plus en phase avec le projet parent, ni avec les autres modules dont il peut dépendre. Si chaque module peut évoluer indépendamment du reste, la gestion multimodule n'est pas la bonne approche : il faudra que tu crées un projet de type "dépendances communes" dont les autres héritent.


    Pour gérer tes version, le plugin release est très bien fait et gère lui même tout seul les numéros de version (en faisant un tag dans ton SCM, un incrémentant toutes les version, en déployant dans ton repo local, et en déployant dans ton repo distant si tu en as un)

  5. #5
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Bonjour,

    Qu'est-ce que tu entends par "Pour gérer tes version, le plugin release est très bien fait et gère lui même tout seul les numéros de version" ?
    C'est quoi le pluginrelease ?
    Je débute avec Maven et j'ai réutilisé des pom d'un collègue ...

    Merci

  6. #6
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    rebonjour !
    a priori d'après ce que j'ai lu ce que tu proposes est lié avec un SCM, alors que là ce n'est pas le cas.
    Je veux juste gérer la version de mes plugins indépendament les uns des autres, car ils n'évoluent pas forcément tous à la même vitesse ...

  7. #7
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Citation Envoyé par kkt8 Voir le message
    a priori d'après ce que j'ai lu ce que tu proposes est lié avec un SCM, alors que là ce n'est pas le cas.
    Tu as pas de contrôle de source? Pas de CVS, pas de SVN, pas de GIT?
    Fais quelque chose où prends toi à minima un dépôt git privé sur le net (bitbucket est bien) afin de gérer tes commits !

    Je veux juste gérer la version de mes plugins indépendament les uns des autres, car ils n'évoluent pas forcément tous à la même vitesse ...
    Donc je répète, si chaque plugin fils peut évoluer à une vitesse différente des autres, la construction en multi-module n'est pas la bonne.

    Le multimodule, c'est quand tu livres plusieurs packages d'un coup pour lesquels les dépendances sont fortes ! Mais pour lesquels chaque package travaille indépendamment des autres. Un bon exemple serait une application web avec une partie coeur contenant les service qui seraient utilisés à la fois par une application web et des batchs : pour faire tourner les batch, tu n'as pas besoin de la webapp, et inversement. Mais toutes les versions sont liées


    Dans ton cas, il va falloir que tu sépares tes plugins les uns des autres si tu veux pouvoir les faire évoluer indépendamment les uns des autres. Chacun son pom, chacun ses dépendances.

  8. #8
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Donc on part du principe :
    • pom parent 1 (version 1.X)

    plugins 1 (version 1.X)
    plugins 2 (version 1.X)

    • pom parent 2 (version 1.Y)

    plugins 3 (version 1.Y)
    plugins 4 (version 1.Y)

    ce qui réponds à mon besoin d'update site independant !

    MAIS (parce qu'il y a toujours un mais ...), pour le besoin d'une installation complète (qui génère mes 2 US ainsi qu'un installer via izpack) je dois faire un pom parent au dessus de parent 1 et parent 2 ???
    ce qui je pense est impossible ... !
    Comment faire dans ce cas ?

    Merci en tout cas de ton aide ... je nage en eaux troubles ...

  9. #9
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Tu fais un autre projet (pas parent du tout) avec les dépendances suivantes :
    plugins 1 (version 1.X)
    plugins 2 (version 1.X)
    plugins 3 (version 1.Y)
    plugins 4 (version 1.Y)


    Comme ça des options de déploiement, tu ne les mets que dans ton projet principal qui contient tes autres dépendances

  10. #10
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    mais un projet de type Maven ?

  11. #11
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Citation Envoyé par kkt8 Voir le message
    mais un projet de type Maven ?
    Oui !
    Avec des dépendances sur les artefacts dont tu as besoin pour faire ta livraison complète (que tu devras déclarer dans une balise <dependencies>)

  12. #12
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Bonjour,

    Est-ce que tu as regardé du côté d'Eclipse Tycho ?

    Un tutoriel : http://mbaron.developpez.com/tutorie...tique-product/
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  13. #13
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Bonjour,

    Bon voici la solution, sans être sure que ça soit LA bonne solution mais ça marche.
    Le pom parent a une version 1.0.0 a comme modules tous les plugins ou pom enfant.
    Les plugins qui ont une version 1.0.0 ont comme parent le pom parent 1.0.0, et ceux qui ont une version différente 2.0.0 ont un pom parent avec une version 2.0.0 mais ce parent ne référénce aucun module...

    Je sais pas si j'ai été claire, si besoin je mettrais un exemple !

    Merci en tout cas à tous de m'avoir aiguillée vers cette solution !

  14. #14
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    C'est une solution qui marche, donc c'est une bonne solution !

    Accessoirement, si ton pom parent ne référence aucun module, ça veut dire que tu n'as pas réellement besoin du pom parent (sauf si tu déclares des variables et des dépendances communes pour tous les autres, mais à ce moment là, les pom fils pourraient aussi ne faire que déclarer le pom "père" comme simple dépendance)

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

Discussions similaires

  1. Comment générer des modèles dans des assemblies différentes
    Par lbensch dans le forum Entity Framework
    Réponses: 3
    Dernier message: 20/10/2010, 11h09
  2. [CLI] Comparer 2 répertoires dans des versions différentes
    Par Empty_body dans le forum CVS
    Réponses: 1
    Dernier message: 24/11/2008, 13h55
  3. Réponses: 2
    Dernier message: 30/10/2008, 18h30
  4. Migration de base Mysql avec des versions différentes
    Par Papouz dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/02/2007, 18h20
  5. Réponses: 6
    Dernier message: 29/11/2006, 11h56

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