3

バージョン管理、リリース、osgiバンドルに関して、マルチモジュールMavenプロジェクトのベストプラクティスを見つけることができませんでした。

まず、バージョン管理とリリース。私のプロジェクトには200以上のjarを持つ5〜6個のサブモジュールがあるため、集約を使用したいと考えていました。

ケース1:プロジェクトのバージョンを指定せず、親バージョンを使用する

  • この場合、Mavenリリースプラグインを使用すると、タグ付けとpom.nextの両方が開発に問題ありません(okは、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:親pomのプロパティファイルでjarバージョンを指定することをお勧めします

  • この場合、pom.nextをチェックすると、不幸にもリリースプラグインを使用すると、jarバージョンと依存関係バージョンの両方がプロパティ(jar1.version)ではなくハードコードされているため、次のリリースではプロパティを使用できなくなります。 2番目の問題は私が1番目の問題を解決することさえできますmavenリリースプラグインはプロパティを変更しないので、次のリリースはプロパティから変更されていないバージョンを使用します

    親プロジェクトの
     プロパティ
      jar1.versionjar2.versionjar3.version
      jar4.version  Module1
      Jar1   (jar1.version)
      Jar2   (jar2.version)  Module2(0.0.1-Snapshot)   Jar3(jar3.version)    (dependencies)[Jar1、Jar2]   Jar4(0.0.1-スナップショット)    (依存関係)[Jar1、Jar3]








私はちょっと混乱していて、リリースとパッチの手順がそれほど難しいとは思っていませんでした。Mavenでこの種の要件を管理するための最良の方法は何ですか

4

1 に答える 1

0

ついに私は//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>

と私のモジュール1pom:

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

モジュール1に依存する私のモジュール2pom

    <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>
于 2011-01-03T19:30:03.067 に答える