Comment configurer projet Maven multi-modules avec la version appropriée et la structure de la version

StackOverflow https://stackoverflow.com/questions/4584296

Question

Je ne pouvais pas trouver la meilleure pratique pour mon projet Maven multi-module, en termes de versioning, et la libération des faisceaux OSGi,

D'abord et Versioning relase. mon projet a 5-6 modules sous avec 200+ pot donc voulu à l'agrégation d'utilisation,

Cas n ° 1: Ne pas préciser les versions du projet et utiliser la version parent

  • Dans ce cas, si je Maven libération plug-in à la fois le marquage et pom.next est ok pour le développement (ok moyens jar3 toujours utiliser la dernière version de jar1 qui est la même avec lui-même), mais Et si je dois faire pièce relase seulement pour jar1? Comment puis-je réussir à faire relase (il est dit ne peut pas libérer projet en raison du non publié parent de dépendances: 0.0.2-SNAPSHOT) et si je parviens à libérer jar1 0.0.1.1, comment dire jar3 d'utiliser la version patchée de jar1?

    Parent Proejct (0.0.1-instantané)
     module1
      Jar1
      Jar2
     module2
     Jar3
      (Dépendances) [Jar1 (project.version), Jar2 (project.version)]
      Jar4
      (Dépendances) [Jar1 (project.version), Jar3 (project.version)]

Cas n ° 2: Peut-être qu'il est bon de spécifier les versions jar dans le fichier de propriété de parent pom

  • dans ce cas, lorsque le plugin version utilisation unfortunetly quand je vérifie pom.next i voir que les deux versions de pot et Les versions de dépendance sont revenus à hardcoded au lieu de la propriété (Jar1.version) de sorte que la prochaine libération, je ne vais pas être en mesure d'utiliser propriétés et second est problème même je réussis à résoudre 1er problème plugin Maven Release ne change pas propriétés donc la prochaine version utilisera les versions non modifiées de propriétés

    Parent Proejct
     propriétés
      jar1.version
      jar2.version
      jar3.version
      jar4.version
     module1
      Jar1 (jar1.version)
      Jar2 (jar2.version)
     Module2 (0.0.1-instantané)
      Jar3 (jar3.version)
       (Dépendances) [Jar1, Jar2]
      Jar4 (0.0.1-instantané)
       (Dépendances) [Jar1, Jar3]

Je suis un peu confus, na pas pensé que relase et la procédure patch serait difficile que, quelle est la meilleure façon de gérer ce genre d'exigences avec Maven

Était-ce utile?

La solution

Enfin, je réussi à soutenir la gestion version (version) pour mon projet multi-module avec // dependencyManagement \

Mon pom parent

    <project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.seyn</groupId>
 <artifactId>hophop</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>pom</packaging>
 <name>hophop</name>

 <scm>
  <connection></connection>
  <developerConnection></developerConnection>
  <url></url>
 </scm>

 <properties>
  <hophop1.version>0.0.1-SNAPSHOT</hophop1.version>
  <hophop2.version>0.0.1-SNAPSHOT</hophop2.version>
 </properties>

 <modules>
  <module>../hophop1</module>
  <module>../hophop2</module>
 </modules>

 <build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.1</version>
   </plugin>
  </plugins>
 </build>

 <dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>com.seyn</groupId>
    <artifactId>hophop1</artifactId>
    <version>${hophop1.version}</version>
   </dependency>
  </dependencies>
 </dependencyManagement>
</project>

et mon module 1 pom:

 <project>
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <artifactId>hophop</artifactId>
  <groupId>com.seyn</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>..\hophop</relativePath>
 </parent>
 <groupId>com.seyn</groupId>
 <artifactId>hophop1</artifactId>
 <version>0.0.1-SNAPSHOT</version>

 <scm>
  <connection>seyn</connection>
  <developerConnection>seyn</developerConnection>
  <url>seyn</url>
 </scm>

</project>

et mon module 2 pom qui dépend du module 1:

    <project>
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <artifactId>hophop</artifactId>
  <groupId>com.seyn</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>..\hophop</relativePath>
 </parent>
 <groupId>com.seyn</groupId>
 <artifactId>hophop2</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <scm>
  <connection>seyn</connection>
  <developerConnection>seyn</developerConnection>
  <url>seyn</url>
 </scm>
 <dependencies>
  <dependency>
   <groupId>com.seyn</groupId>
   <artifactId>hophop1</artifactId>
  </dependency>
 </dependencies>
</project>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top