【问题标题】:How to setup multi-module maven project with proper release and version structure如何设置具有正确发布和版本结构的多模块 maven 项目
【发布时间】:2011-06-02 19:51:57
【问题描述】:

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

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

案例一:不指定项目版本,使用父版本

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

    父项目(0.0.1-快照)
    模块 1
    罐子1
    罐子2
    模块2
    罐子3
    (依赖)[Jar1(project.version),Jar2(project.version)]
    罐子4
    (依赖)[Jar1(project.version),Jar3(project.version)]

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 怎么不抱怨你没有依赖于 com.seyn:hophop1 的版本?
    • @Peter:因为“ com.seynhophop1${hophop1.version} "
    • release:prepare 如何处理这个问题?它肯定会看到仍然存在快照依赖项吗?
    猜你喜欢
    • 2010-11-15
    • 2020-11-01
    • 2017-12-26
    • 1970-01-01
    • 2011-07-07
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多