maven-2 - 如何设置具有适当版本和版本结构的多模块 Maven 项目

标签 maven-2 maven-release-plugin multi-module

在版本控制、发布和 osgi 包方面,我找不到适合我的多模块 maven 项目的最佳实践,

首先是版本控制和发布。我的项目有 5-6 个子模块和 200 多个 jar,所以想使用聚合,

情况一:不指定项目版本,使用父版本

  • 在这种情况下,如果我使用 maven 版本 插件标记和 pom.next 是 可以进行开发(ok 表示 jar3 将始终使用最新版本 jar1 与自身相同)但是 如果我需要发布补丁怎么办 只适用于 jar1 吗?我怎样才能做到 释放(它说不能释放 项目由于未发布 依赖父级:0.0.2-SNAPSHOT) 如果我设法释放 jar1 0.0.1.1 ,怎么说jar3使用补丁版本的jar1?

    父项目(0.0.1-快照)
    模块 1
    jar 1
    jar 2
    模块二
    Jar3
    (依赖)[Jar1(project.version),Jar2(project.version)]
    Jar4
    (依赖项)[Jar1(project.version),Jar3(project.version)]

情况 2:也许在父 pom 的属性文件中指定 jar 版本是个好主意

  • 在这种情况下使用发布插件 不幸的是,当我检查 pom.next 我 看到 jar 版本和 依赖版本恢复为 硬编码而不是属性 (jar1.version) 以便接下来 释放我将无法使用 属性,第二个问题是 即使我设法解决了第一个问题 maven发布插件不变 下一个版本将使用的属性 来自属性的未修改版本

    父项目
    属性
    jar1.版本
    jar2.版本
    jar3.版本
    jar4.版本
    模块 1
    Jar1(jar1.version)
    Jar2(jar2.version)
    模块 2(0.0.1-快照)
    Jar3(jar3.version)
    (依赖项)[Jar1,Jar2]
    Jar4(0.0.1-快照)
    (依赖项)[Jar1、Jar3]

我有点困惑,没想到发布和补丁过程会那么困难,用maven管理这种需求的最好方法是什么

最佳答案

最后我设法通过//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>

关于maven-2 - 如何设置具有适当版本和版本结构的多模块 Maven 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584296/

相关文章:

java - Maven 与 AspectJ - 例子?

Maven 自动化版本控制和变更日志生成

Maven发布:prepare with NoClassDefFoundError while using git

maven - 为什么会释放:prepare change versions back to SNAPSHOT?

java - 在多模块 Maven 项目中优化 Spring Bean?

java - 缺少 repo1.maven.org 中的 jar

java - 在本地网络中使用 Sonatype nexus

java - 有没有一种快速的方法可以手动将一堆带有 poms 的工件 jar 上传到 archive?

maven-2 - 如何在 Maven 多模块构建中混合父 POM?

maven - 如何在 OpenShift 上部署多模块 maven spring boot 应用程序