Maven 如何对项目进行版本编号?

Maven 如何对项目进行版本编号?,maven,release-management,maven-release-plugin,semantic-versioning,build-numbers,Maven,Release Management,Maven Release Plugin,Semantic Versioning,Build Numbers,我有一个maven多模块项目,其中包含6个以上的子模块。如果一个由3人组成的团队以2个子模块作为各自的任务并行工作,那么如何增加版本号 而我遵循的是发行周期中版本编号的Major.minor.patch meta格式 Project A -- sub-module-assembler pom.xml -- sub-module-1 -sub-sub-module-1 pom.xml -sub-sub-module-2 pom.xml

我有一个
maven
多模块
项目,其中包含6个以上的子模块。如果一个由3人组成的团队以2个子模块作为各自的任务并行工作,那么如何增加版本号

而我遵循的是发行周期中版本编号的
Major.minor.patch meta
格式

Project A
   -- sub-module-assembler 
      pom.xml
   -- sub-module-1
        -sub-sub-module-1 pom.xml 
        -sub-sub-module-2 pom.xml 
      pom.xml
   -- sub-module-2 
        -sub-sub-module-1 pom.xml 
        -sub-sub-module-2 pom.xml 
      pom.xml
   -- sub-module-3 
        -sub-sub-module-1 pom.xml 
        -sub-sub-module-2 pom.xml 
      pom.xml
   -- sub-module-4 
        -sub-sub-module-1 pom.xml 
        -sub-sub-module-2 pom.xml 
      pom.xml
   -- sub-module-5 
        -sub-sub-module-1 pom.xml 
        -sub-sub-module-2 pom.xml 
      pom.xml
   -- sub-module-6 
        -sub-sub-module-1 pom.xml 
        -sub-sub-module-2 pom.xml 
      pom.xml
--pom.xml
并行编程
中增加和减少版本号的确切用法,而在此过程中需要注意的关键是该项目中的一些
子模块
完全取决于其他一些
子模块
,如果是这样的话,那么当开发以一定的顺序并行进行时,如何准确地确定版本号呢

我不清楚下面的内容,但这是版本编号的正确方法吗

  • 我是否需要进行
    元发布
    ,以防出现错误修复,例如alpha、beta、gamma等

  • 如果在
    子模块中完成
    功能[sub-sub-module-x]
    ,而我使用的是
    第二级+
    子模块
    例如0.1.1-alpha、0.1.2-alpha等,我是否需要执行
    补丁发布

  • 在完成子模块时,我是否需要执行
    次要发布
    ,例如0.2.0-alpha、0.2.0-RC等
  • 因此,在集成了所有RC的0.2.0-RC+0.3.0-RC+0.4.0-RC等之后,我是否需要像1.0.0-RTM等那样进行
    主要发行版
  • 因此,理解上述流程是一个有点复杂的过程

    有没有办法在项目中自动执行
    版本编号
    ,以保持清晰的
    版本编号
    。请提供解决方案


    谢谢

    我怀疑所有版本控制策略都没有答案。但是,让我尝试一些提示,可能会帮助您选择适合您的情况的策略

    这个项目看起来相当大。我要做的第一个分组是责任。是否存在仅限于某个开发团队的模块?还是整个系统都是“一体式”的?希望你能把它分开一点。 一旦您了解了模块的职责,您就需要定义一些生命周期。发布(或错误修复、补丁)的创建方式和频率,以及由谁创建?如果每个人都遵循相同的节奏,那么您可以共享一个版本并发布整个树。但在大型项目中通常情况并非如此。如果很多人共享一个版本,它还会在开发过程中引入副作用

    如果您不打算一次发布完整的树,您可能会进一步拆分它。您仍然可以使用一个公共的父pom.xml(但是有一个发布版本)

    我将在父pom.xml中为模块定义一个版本并继承它。所以子模块中没有单独的版本。此外,依赖于其他模块的每个团队都不应该使用快照依赖关系来处理其他团队的工作。他们可能只使用发布的版本(无论是BETA版还是RC1版)。保持构建的可复制性很重要。例如:“对您不负责的工件没有快照依赖关系(您可以控制更改内容和更改时间)”

    至于版本控制本身:毫无疑问,更简单的选择可能更好。所有的元信息可能只会混淆实际状态

    绘制一个部署管道也可能有一些用处:哪个模块首先出现,哪些模块依赖于它,等等。一个模块中的更改量定义了版本更改的方式(主要、次要、补丁更改)。如果这些更改没有在模块间传播(API保持稳定,这是您的目标),那么下一个模块可能只发布补丁

    如果您还没有发布任何内容,请提前计划。每一次迭代通常都是一次API更改(因此它实际上是一次主要的发布)。这将导致版本18.0.0发布(经过18次迭代)。因此,通常使用次要版本来表示迭代,而补丁版本则表示一些修复,以稳定该版本。因此,选择主要版本更多的是从市场营销角度,而不是从技术角度

    这在某种程度上还取决于您构建的软件类型(产品、内部解决方案、为您的环境提供的一些附加服务)。产品有更清晰的版本控制,它们通常使用元部件来表示迭代,使用major.minor.patch编号来表示正在进行的操作。这种策略(“指出预期的变化”)也会对你的工作有所帮助

    因此,希望这不会比您开始时提出更多的问题:)