Como proyecto Maven multi-módulo de configuración con la liberación adecuada y estructura de la versión

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

Pregunta

No podía encontrar la mejor práctica para mi proyecto maven de varios módulos, en términos de control de versiones, paquetes de revisión y OSGi,

En primer lugar de versiones y relase. mi proyecto tiene 5-6 submódulos con 200+ frasco para querido utilizar la agregación,

Caso 1: No es para especificar las versiones del proyecto y el uso de los padres versión

  • lanzamiento en este caso si uso Maven plug-in tanto marcado y es pom.next bien para el desarrollo (medios ok jar3 siempre utilizará la última versión de jar1 que es la misma con sí mismo) pero ¿Y si necesito hacer relase parche sólo para jar1? ¿Cómo puedo manejar a relase maquillaje (se dice puede no liberación proyecto debido a la no liberada dependencias de los padres: 0.0.2-SNAPSHOT) y si me las arreglo para liberar jar1 0.0.1.1, cómo decir jar3 utilizar la versión parcheada de jar1?

    Padres Proejct (0.0.1-Snapshot)
    Módulo1
    Jar1
    Jar2
    Module2
    Jar3
    (Dependencias) [Jar1 (project.version), Jar2 (project.version)]
    Jar4
    (Dependencias) [Jar1 (project.version), Jar3 (project.version)]

Caso 2: Tal vez sea buena idea especificar versiones tarro en el archivo de la propiedad de los padres pom

  • en este caso cuando el plugin comunicado de uso desafortunadamente cuando compruebo i pom.next ver que tanto en la versión frasco y versiones de dependencia se revierten a hardcoded en lugar de la propiedad (Jar1.version) de manera que para el próximo libertad, yo no voy a ser capaz de utilizar propiedades y segundo problema es Incluso me las arreglo para resolver un problema primero Plugin de liberación experto no cambia propiedades de manera próxima versión va a utilizar versiones no modificadas de propiedades

    Padres Proejct
    propiedades
    jar1.version
    jar2.version
    jar3.version
    jar4.version
    Módulo1
    Jar1 (jar1.version)
    Jar2 (jar2.version)
    Module2 (0.0.1-Snapshot)
    Jar3 (jar3.version)
    (Dependencias) [Jar1, Jar2]
    Jar4 (0.0.1-Snapshot)
    (Dependencias) [Jar1, Jar3]

Estoy algo confundido, ni de pensamiento que relase y el procedimiento parche sería tan difícil, ¿cuál es la mejor manera de manejar este tipo de requisitos con Maven

¿Fue útil?

Solución

Finalmente logré versión de soporte (versión) de gestión para mi proyecto de varios módulos con // DependencyManagement \

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

y mi módulo 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>

y mi módulo 2 pom que depende del módulo 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top