Как настроить мультимодульный проект Maven с правильной версией релиза и структурой версий - PullRequest
3 голосов
/ 03 января 2011

Я не смог найти лучших практик для моего многомодульного проекта maven с точки зрения управления версиями, выпусков и пакетов osgi,

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

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

  • в этомВ случае, если я использую плагин релиза maven, тегирование и pom.next подходят для разработки (хорошо, значит, jar3 всегда будет использовать последнюю версию jar1, которая идентична самой себе), но что если мне нужно сделать исправление патча только для jar1?Как я могу сделать пересылку (он говорит, что не могу выпустить проект из-за не выпущенных зависимостей parent: 0.0.2-SNAPSHOT) и если мне удастся выпустить jar1 0.0.1.1, как сказать jar3, чтобы использовать исправленную версию jar1?

    Родительский проект (снимок 0.0.1)
    Module1
    Jar1
    Jar2
    Module2
    Jar3
    (зависимости) [Jar1 (project.version), Jar2(project.version)]
    Jar4
    (зависимости) [Jar1 (project.version), Jar3 (project.version)]

Случай 2: возможноРекомендуется указывать версии jar в файле свойств родительского pom

  • в этом случае, когда, к сожалению, используйте плагин release, когда я проверяю pom.next, я вижу, что и версия jar, и версии зависимостейвместо свойства (jar1.version) возвращено жестко закодированное, так что в следующем выпуске я не смогу использовать свойства, и вторая проблема заключается даже в том, что мне удается решить 1-ю проблему. Плагин maven release не изменяет свойства, поэтому в следующем выпуске будут использоваться неизмененные версии.фрom properties

    родительский проект
    свойства
    jar1.version
    jar2.version
    jar3.version
    jar4.version
    Module1
    Jar1 (jar1.version)
    Jar2 (jar2.version)
    Module2 (0.0.1-снимок)
    Jar3 (jar3.version)
    (зависимости) [Jar1, Jar2]
    Jar4 (0.0.1-Снимок)
    (зависимости) [Jar1, Jar3]

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

1 Ответ

0 голосов
/ 03 января 2011

наконец мне удалось поддержать управление выпуском (версией) для моего многомодульного проекта с помощью // dependencyManagement \

Мой родительский 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>

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