Как настроить проект Multi-Module Maven с правильной структурой выпуска и версии

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

Вопрос

Я не смог найти лучшую практику для моего многомодульного проекта Maven, с точки зрения версий, выпуска и Osgi Bundles,

Прежде всего, управление версиями и резом. Мой проект имеет 5-6 подмодулей с 200+ банками, поэтому хотели использовать агрегацию,

Случай 1: не указывать версии проекта и использовать родительскую версию

  • В этом случае, если я использую плагин Maven Release как тегинг, так и pom.next в порядке для разработки (OK означает, что JAR3 всегда будет использовать последнюю версию JAR1, которая сама по себе), но что, если мне нужно сделать патч -рецензирование только для JAR1? Как я могу сделать RELASE (он говорит, что не может выпустить проект из-за не выпущенных зависимостей. Родитель: 0,0,2-снапсшот), и если мне удастся выпустить JAR1 0.0.1.1, как сказать JAR3, чтобы использовать исправленную версию JAR1?

    Родительский ProeJct (0,0,1-снапшот)
    Модуль1
    Jar1
    Jar2
    Модуль2
    Jar3
    (Зависимости) [jar1 (project.version), jar2 (project.version)]
    Jar4
    (Зависимости) [jar1 (project.version), jar3 (project.version)]

Случай 2: Может быть, это хорошая идея указать версии JAR в файле свойств родительского POM

  • В этом случае, когда я не сожалею использование плагина освобождения, когда я проверяю pom.next, я вижу, что как версия, так и версии JAR и версии зависимости возвращаются в жесткий кодирование вместо свойства (jar1.version), так что для следующего выпуска я не смогу использовать свойства и и Вторая проблема в том, что мне даже удается решить 1 -ю задачу плагин Maven Lelepry не изменяет свойства, поэтому в следующем выпуске будут использоваться немодифицированные версии из свойств

    Родительский ProeJct
    Характеристики
    jar1.version
    Jar2.version
    Jar3.version
    Jar4.version
    Модуль1
    Jar1 (jar1.version)
    Jar2 (jar2.version)
    Module2 (0,0,1-снапшот)
    Jar3 (jar3.version)
    (Зависимости) [Jar1, jar2
    JAR4 (0,0,1-снапшот)
    (Зависимости) [JAR1, JAR3

Я немного смущен, не думал, что процедура RELASE и Patch будет такой сложной, какой лучший способ управлять такими требованиями с Maven

Это было полезно?

Решение

Наконец, мне удалось поддержать управление выпуском (версия) для моего многомодульного проекта с // DeperencyManagement

Мой родительский помп

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

и мой модуль 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>

и мой модуль 2 POM, который зависит от модуля 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top