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 :

L'oeuf et la poule: mvn release:prepare et pom parent.


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut L'oeuf et la poule: mvn release:prepare et pom parent.
    Bonjour,

    J'ai une série de cinquante projets Maven P1 à P50 qui dépendent de pom parents.

    J'ai également un projet Maven autonome X qui installe ces pom parents ainsi que les jar tierce-partie qui ne sont pas téléchargeables depuis des repository Maven.

    Comme vous le savez, il n'est pas possible d'avoir une procédure de construction générale constituée ainsi:
    X
    P1
    P2
    ...
    P50

    car le reactor Maven, avant de débuter la construction des projets, va noter les versions et artefacts déclarés dans l'ensemble des projets X à P50 alors même que X a potentiellement l'intention d'y faire des changements pour P1 à P50.

    Il faut impérativement, enfin c'est ce dont je me suis convaincu, que le projet X soit lancé seul, puis alors seulement la construction des projets P1 à P50.

    Mais cela me pose un problème: comment avoir un mvn release:prepare réalisant de manière indépendante l'installation des pom parents via le projet X, puis la compilation des projets P1 à P50?

    En vous remerciant,

    Grunt.

  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 : 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
    Bonjour,

    Je t'avouerais que c'est un peu confus tout ça... Je n'ai pas bien compris ce que c'était que ce projet X, qui modifie les parents ? S'il est autonome, ne vaudrait-il pas mieux le releaser à part, puis enchainer la release des autres projets ?

    Quelle est la structure exacte de tes projets ? Qui sont les parents, quels pom aggrègents quoi, etc. Peut-être pourrais tu nous l'expliquer en limitant le nombre de projet Px ?
    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 très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut
    Oui, je vais essayer d'être plus clair.

    Voici un pom-parent.xml typique que je souhaite voir installé avant la compilation de ma chaîne de projets:

    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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    <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>the.group</groupId>
    	<artifactId>parent</artifactId>
    	<version>1.11-SNAPSHOT</version>
    	<name>POM Parent</name>
    	<description>Définitions générales du parent</description>
    	<packaging>pom</packaging>
     
    	<properties>
    		<!-- Plugins Maven -->
    		<maven-compiler.version>2.3.2</maven-compiler.version>
    		<maven-javadoc.version>2.8.1</maven-javadoc.version>
     
    		<!-- Propriétés de construction -->
    		<java.version>1.6</java.version>
    		<jee.version>6.0</jee.version>
    		<jboss-as.version>7.1.1.Final</jboss-as.version>
     
    		<maven.test.compile.encoding>UTF-8</maven.test.compile.encoding>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     
    		<!-- API de l'application -->
    		<common-lang.version>3.1</common-lang.version>
     
    		<!-- Tests unitaires -->
    		<arquilian-bom.version>1.0.0.Final</arquilian-bom.version>
    		<junit.version>4.10</junit.version>
     
    		<!-- Loggers -->
    		<common-logging.version>1.1.1</common-logging.version>
    		<log4j.version>1.2.16</log4j.version>
    	</properties>
     
    	<dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>${junit.version}</version>
    			<scope>test</scope>
    		</dependency>
     
    		<dependency>
    			<groupId>org.apache.commons</groupId>
    			<artifactId>commons-lang3</artifactId>
    			<version>${common-lang.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>commons-logging</groupId>
    			<artifactId>commons-logging</artifactId>
    			<version>${common-logging.version}</version>
    		</dependency>
     
    		<dependency>
    		    <groupId>log4j</groupId>
    		    <artifactId>log4j</artifactId>
    		    <version>${log4j.version}</version>
    		</dependency>
    	</dependencies>
     
    	<dependencyManagement>
    	    <dependencies>
    	        <dependency>
    	            <groupId>org.jboss.arquillian</groupId>
    	            <artifactId>arquillian-bom</artifactId>
    	            <version>${arquilian-bom.version}</version>
    	            <scope>import</scope>
    	            <type>pom</type>
    	        </dependency>
    	    </dependencies>
    	</dependencyManagement>
     
    	<profiles>
    		<profile>
    			<id>release</id>
    			<build>
    				<plugins>
    					<plugin>
    						<groupId>org.apache.maven.plugins</groupId>
    						<artifactId>maven-javadoc-plugin</artifactId>
    						<version>${maven-javadoc.version}</version>
    						<configuration>
    							<docfilessubdirs>true</docfilessubdirs>
    						</configuration>
     
    						<executions>
    							<execution>
    								<id>attach-javadocs</id>
    								<goals>
    								    <goal>aggregate</goal>
    									<goal>jar</goal>
    								</goals>
    							</execution>
    						</executions>
    					</plugin>
    				</plugins>
    			</build>
    		</profile>
    	</profiles>
     
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>${maven-compiler.version}</version>
    				<configuration>
    					<source>${java.version}</source>
    					<target>${java.version}</target>
    					<debug>true</debug>
    					<debuglevel>lines,vars,source</debuglevel>
     
    					<charset>UTF-8</charset>
    					<docencoding>UTF-8</docencoding>
    				</configuration>
    			</plugin>
    		</plugins>
     
    		<pluginManagement>
    		    <plugins>
    		        <plugin>
    		            <groupId>org.apache.maven.plugins</groupId>
    		            <artifactId>maven-compiler-plugin</artifactId>
    		            <configuration>
    		                <compilerArguments>
    		                   <endorseddirs>${project.build.directory}/endorsed</endorseddirs>
    		                </compilerArguments>
    		            </configuration>
    		        </plugin>
    		        <plugin>
    		            <groupId>org.apache.maven.plugins</groupId>
    		            <artifactId>maven-surefire-plugin</artifactId>
    		            <configuration>
    		                <forkMode>once</forkMode>
    		                <argLine>-Djava.endorsed.dirs=${project.build.directory}/endorsed</argLine>
    		            </configuration>
    		         </plugin>
     
    				<!--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-dependency-plugin</artifactId>
    										<versionRange>[2.5,)</versionRange>
    										<goals>
    											<goal>copy</goal>
    										</goals>
    									</pluginExecutionFilter>
     
    									<action>
    										<ignore></ignore>
    									</action>
    								</pluginExecution>
    							</pluginExecutions>
    						</lifecycleMappingMetadata>
    					</configuration>
    				</plugin>
    		    </plugins>
    		</pluginManagement>		
    	</build>
    </project>
    J'ai d'autres pom parents dérivés, dédiés à des projets d'une certaine nature.
    Par exemple, ce POM, appelé pom-parent-db2-db400.xml associe les dépendances requises aux projets qui vont utiliser ces bases de données:

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <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>
    	<artifactId>parent.persistance.db2_db400</artifactId>
    	<name>POM Parent pour la persistance DB 2 et DB 400</name>
    	<description>Parent général pour la persistance des données DB 2 et DB400.</description>
     
    	<parent>
    		<groupId>the.group</groupId>
    		<artifactId>parent.persistance</artifactId>
    		<version>1</version>
    	</parent>
     
    	<properties>
    		<!-- Drivers et Base de données -->
    		<jt-400.version>6.7</jt-400.version>
    		<hibernate.version>4.1.7.Final</hibernate.version>
     
    		<!-- Logger recommandé par Hibernate -->
    		<slf4j.version>1.6.1</slf4j.version>
    	</properties>
     
    	<dependencies>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-core</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-entitymanager</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
     
    		<dependency>
    		    <groupId>org.slf4j</groupId>
    		    <artifactId>slf4j-api</artifactId>
    		    <version>${slf4j.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>net.sf.jt400</groupId>
    			<artifactId>jt400</artifactId>
    			<version>${jt-400.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>ibm</groupId>
    			<artifactId>db2</artifactId>
    			<version>1</version>
    		</dependency>
     
    		<dependency>
    			<groupId>ibm</groupId>
    			<artifactId>db2.licence</artifactId>
    			<version>1</version>
    		</dependency>
    	</dependencies>
     
    	<packaging>pom</packaging>
    </project>
    Les drivers DB/2 ne sont pas accessibles depuis un repository sur Internet. Il faut les avoir et les installer, à la main, dans maven.

    C'est l'installation de mes POM parents et des dépendances dont se charge un projet de type <pom> que j'appelle X. Voici son script:

    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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    <?xml version="1.0" encoding="UTF-8"?>
    <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>the.group</groupId>
    	<artifactId>init-maven</artifactId>
    	<name>Installation d'artefacts requis</name>
    	<description>Installations d'artefacts tierce partie</description>
    	<version>1.11-SNAPSHOT</version>
    	<packaging>pom</packaging>
     
    	<properties>
    		<maven-release-plugin>2.3.2</maven-release-plugin>
    		<maven-install.version>2.4</maven-install.version>
    	</properties>
     
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-install-plugin</artifactId>
    				<version>${maven-install.version}</version>
     
    				<executions>
    					<!-- POM Parent -->
    					<execution>
    						<id>p1</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Persistance Générique -->
    					<execution>
    						<id>p2</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-persistance.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.persistance</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Persistance DB/2 et DB/400 -->
    					<execution>
    						<id>p3</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-persistance-db2-db400.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.persistance.db2_db400</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Persistance MySQL -->
    					<execution>
    						<id>p4</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-persistance-mysql.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.persistance.mysql</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Service JEE -->
    					<execution>
    						<id>p5</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-service.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.service</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Service Spring -->
    					<execution>
    						<id>p6</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-spring.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.spring</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Web Services -->
    					<execution>
    						<id>p7</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-webservice-client.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.webservice-client</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- POM Parent Web -->
    					<execution>
    						<id>p8</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/parent-pom-web.xml</file>
    							<groupId>the.group</groupId>
    							<artifactId>parent.web</artifactId>
    							<packaging>pom</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- Driver DB/2: partie 1 -->
    					<execution>
    						<id>d1</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/ext/db2/db2jcc.jar</file>
    							<groupId>ibm</groupId>
    							<artifactId>db2</artifactId>
    							<packaging>jar</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
     
    					<!-- Driver DB/2: partie 2 -->
    					<execution>
    						<id>d2</id>
    						<phase>validate</phase>
    						<goals>
    							<goal>install-file</goal>
    						</goals>
     
    						<configuration>
    							<file>../Livraison/ext/db2/db2jcc_license_cu.jar</file>
    							<groupId>ibm</groupId>
    							<artifactId>db2.licence</artifactId>
    							<packaging>jar</packaging>
    							<version>1</version>
    						</configuration>
    					</execution>
    				</executions>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    Cela fait, les pom.xml des projets de l'application, ceux que je vais lancer dans une grande chaîne de modules, et que j'ai appelés P1 à P50, sont courts:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <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>
    	<artifactId>utilitaires.communs</artifactId>
    	<name>Utilitaires communs.</name>
    	<description>Utilitaires communs.</description>
     
    	<parent>
    		<groupId>the.group</groupId>
    		<artifactId>parent</artifactId>
    		<version>1</version>
    	</parent>
     
    	<dependencies>
    		<dependency>
    		    <groupId>org.jboss.arquillian.junit</groupId>
    		    <artifactId>arquillian-junit-container</artifactId>
    		    <scope>test</scope>		
    		</dependency>
    	</dependencies>
    </project>
    ou

    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
    <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>
    	<artifactId>persistance.dao.fournisseur</artifactId>
    	<name>DAO Fournisseur</name>
    	<description>DAO sur les fournisseurs</description>
     
    	<parent>
    		<groupId>the.group</groupId>
    		<artifactId>parent.persistance.db2_db400</artifactId>
    		<version>1</version>
    	</parent>
     
    	<dependencies>
    		<dependency>
    			<groupId>the.group</groupId>
    			<artifactId>persistance.jpa.dao.ibm_db2_db400</artifactId>
    			<version>${project.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>org.jboss.arquillian.junit</groupId>
    			<artifactId>arquillian-junit-container</artifactId>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    </project>
    par exemple.


    Cette construction, basée sur différents POM parents, eux dérivés les uns des autres, me plaît car je la trouve efficace.

    Au quotidien, j'ai installé une fois les POM parents en lançant mon projet X, puis j'ai par la suite toujours compilé avec le pom.xml général qui construisait les modules P1 à P50.

    Cependant, au moment où je dois livrer, il faut que mvn release:prepare change le numéro de version inclu dans les POMs parents, les installe dans le repository, et cela avant que la construction des projets P1 à P50 puisse commencer. Ce qui fait que mon mvn release:prepare doit réaliser deux choses:
    - un mvn release:prepare sur X
    - puis, un mvn release:prepare sur les projets P1 à P50.

    et il doit faire ces deux actions dans deux exécutions distinctes, en série, pour que la construction des projets P1 à P50 trouve bien ses POM parents installés.

    Si je n'arrive pas à lancer cette préparation d'un seul coup, bien sûr, je pourrai m'en sortir en faisant plusieurs étapes manuelles, mais j'apprécierais de placer cela dans une seule entrée de Hudson pour le rendre assez simplement actionnable.

    Est-ce moins confus?

  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 : 46
    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
    Pour les truc que tu installe "a la main", il est bien plus efficace de les mettre directement dans ton repository d'entreprise une bonne fois pour toute et d'avoir tes projets qui référencent ce repository.

    Au delà de ça, pour tes pom, je trouve bizzare que tu fasse un install file à la main durant un phase de validate. L'install doit se faire tout seul lors du mvn:install, il suffit de mettre tous ces projets comme modules d'un projet principal. un mvn:install sur le principal installera tous les pom parents d'un coup. Pareil avec un mvn:release qui fera la release de tous les pom parents d'un coup.

    Un fois les pom parent releasés ou installé, les projets P1-> P50 pourront être compilés / released sans soucis.

    Tu peux même mettre tout dans un seul projet global si ils ont le même cycle de version.

  5. #5
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut
    J'applique ton idée qui me semble avisée.

    Il y a un cas (exceptionnel) qui empêche l'ensemble de fonctionner, mais ce ne sera pas gênant, puisque c'est exceptionnel:

    Si dans un projet P je suis amené à référencer un nouveau POM parent,
    que le projet X, bien sûr, s'apprête à installer,

    je ne pourrai pas lancer le mvn install depuis la racine de mon projet, depuis le pom.xml général. Car le reactor va observer tous les projets de la liste: X, P1 à P50, et va déclarer: "je ne connais pas le <nouveau pom-parent>". Le reactor n'est en effet pas capable d'imaginer que le projet X s'apprête à l'installer et qu'en fait, tout ira bien.

    Mais oui, je crois que ta solution va bien me simplifier le problème.
    J'attends un peu de l'expérimenter plus avant, avant de taguer ce post en Résolu. Les premières tentatives que je fais m'ont l'air bonnes.

    Merci!

  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 : 46
    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
    il faut que le nouveau pom (dont P dépend) soit déjà présent dans les sous projet de X et il n'y aura pas de soucis.

    Maven va trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    global
     X
      nouveau-parent
     P
      P1
      P2
      ...
      P28 avec dépendance vers nouveau-parent
    et il n'y aura aucun soucis.

Discussions similaires

  1. Impossible de faire un mvn release:prepare
    Par yenfou2000 dans le forum Maven
    Réponses: 0
    Dernier message: 11/05/2012, 11h58
  2. Mvn release:prepare avec svn+ssh, comment maj le repo
    Par melbouille dans le forum Maven
    Réponses: 0
    Dernier message: 06/04/2010, 22h07
  3. mvn release:prepare en erreur
    Par jprsoft dans le forum Maven
    Réponses: 2
    Dernier message: 31/12/2008, 08h11
  4. [debutant] release:prepare et subversion
    Par gigigao dans le forum Maven
    Réponses: 8
    Dernier message: 27/10/2006, 15h36
  5. [maven2/clearcase] mvn release:perform -X
    Par jerrr dans le forum Maven
    Réponses: 1
    Dernier message: 26/10/2006, 11h19

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