在版本管理,发布和OSGI捆绑中,我找不到我的多模块Maven项目的最佳实践,

首先,版本控制和恢复。我的项目有5-6个子模块,带有200多个JAR,因此想使用聚合,

案例1:不指定项目版本并使用父版本

  • 在这种情况下,如果我使用Maven Release插件标记和pom.next可以开发(确定意味着JAR3将始终使用JAR1的最新版本,而JAR1与自身相同),但是如果我只需要使补丁含量仅用于JAR1,该怎么办?我该如何设法进行重新酶(它说由于未释放的依赖关系父母:0.0.2-snapshot而无法发布项目),并且如果我设法释放JAR1 0.0.1.1,那么如何说JAR3使用JAR1的修补版本?

    父pro proejct(0.0.1-snapshot)
    模块1
    jar1
    JAR2
    模块2
    JAR3
    (依赖关系)[JAR1(Project.Version),JAR2(Project.version)
    jar4
    (依赖关系)[JAR1(Project.Version),JAR3(Project.version)

案例2:可能是在父pom的属性文件中指定JAR版本的好主意

  • 在这种情况下,当我检查pom时不幸使用释放插件时,我看到jar版本和依赖版本都恢复为硬编码而不是属性(jar1.version),以便下一个版本,我将无法使用属性和属性,并且第二个问题是我设法解决了第一个问题Maven Release插件不会更改属性,因此下一个版本将使用来自属性的未修改版本

    父pro proejct
    特性
    jar1.version
    jar2.version
    jar3.version
    jar4.version
    模块1
    jar1(jar1.version)
    jar2(jar2.version)
    模块2(0.0.1-snapshot)
    jar3(jar3.version)
    (依赖关系)[JAR1,JAR2
    JAR4(0.0.1-Snapshot)
    (依赖关系)[JAR1,JAR3

我有点困惑,没有想到relase和patch程序很难

有帮助吗?

解决方案

最后,我设法支持我的多模块项目的版本管理(版本)管理。

我的父母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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top