Domanda

Non ho potuto trovare la migliore pratica per il mio multi-modulo del progetto Maven, in termini di controllo delle versioni, di rilascio e OSGi fasci,

Prima di tutto delle versioni e relase. il progetto ha 5-6 moduli secondari con 200+ vaso in modo voluto uso aggregazione,

Caso 1: Non per specificare le versioni del progetto e la versione uso genitore

  • rilascio in questo caso se uso Maven plug-in sia tagging e pom.next è ok per lo sviluppo (mezzi ok jar3 sarà sempre utilizzare la versione più recente di jar1 che è lo stesso con se stessa) ma cosa succede se ho bisogno di fare delle patch relase solo per jar1? come posso riuscire a make relase (si dice non può rilascio progetto a causa del mancato rilascio dipendenze genitore: 0.0.2-SNAPSHOT) e se riesco a rilasciare jar1 0.0.1.1, come dire jar3 di utilizzare la versione patchata di jar1?

    Parent Proejct (0.0.1-Snapshot)
    Module1
    Jar1
    Jar2
    Module2
    Jar3
    (Dipendenze) [Jar1 (project.version), Jar2 (project.version)]
    Jar4
    (Dipendenze) [Jar1 (project.version), Jar3 (project.version)]

Caso 2: Forse è una buona idea per specificare le versioni jar nel file di proprietà di genitore pom

  • in questo caso quando plug-uso di rilascio unfortunetly quando controllo pom.next i vedere che sia la versione vaso e versioni di dipendenza vengono ripristinati al hardcoded invece di proprietà (Jar1.version) in modo che per il prossimo rilascio non sarò in grado di utilizzare proprietà, e secondi sia problema anche io riesco a risolvere primo problema plugin di rilascio Maven non cambia proprietà in modo prossima release userà versioni non modificate dalla proprietà

    Parent Proejct
    proprietà
    jar1.version
    jar2.version
    jar3.version
    jar4.version
    Module1
    Jar1 (jar1.version)
    Jar2 (jar2.version)
    Module2 (0.0.1-Snapshot)
    Jar3 (jar3.version)
    (Dipendenze) [Jar1, Jar2]
    Jar4 (0.0.1-Snapshot)
    (Dipendenze) [Jar1, Jar3]

Sono un po 'confuso, il pensiero non ha ancora che relase e la procedura di patch sarebbe così difficile, qual è il modo migliore per gestire questo tipo di esigenza con Maven

È stato utile?

Soluzione

finally i managed to support release(version) management for my multi-module project with //dependencyManagement\

My parent pom

    <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>

and my 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>

and my module 2 pom that depends 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top