Maven 不同分支版本控制的最佳实践 [开发、质量保证/预发布]

2024-01-06

我有几个在不同分支上开发和发布的项目,即发展 and release。这个过程运行得很好,但不幸的是它有一些缺点,我一直想知道是否有更好的版本控制方案适用于我的情况。

主要开发发生在开发分支上(即 Subversiontrunk但这并不重要)开发团队在哪里提交更改。构建和打包工件后,Jenkins 将它们部署到 Maven 存储库和开发集成应用程序服务器。这是一个开发快照,基本上只是一个特征分支 http://martinfowler.com/bliki/FeatureBranch.html包含一个公共分支上的所有已开发功能:

<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>D.16-SNAPSHOT</version>

当 QA 团队完成并请求一项特定业务变更时,这一单一变更将被合并到发布分支(分支/发布)。 Jenkins 将生成的工件部署到 QA 应用程序服务器:

<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>R.16-SNAPSHOT</version>

然后,通过 maven-release-plugin 在软件的发布分支版本上进行发布(它创建一个维护标签/分支以快速修复错误)。 (R.16-快照 => R.16)

开发和发布分支当前版本分别为 D.16-SNAPSHOT 和 R.16-SNAPSHOT。这允许在 Maven 存储库中分离工件,但会产生依赖于标准 Maven 版本控制风格的不同 Maven 机制的问题。这也破坏了 OSGI 版本控制。

现在,您将如何在这样的方案中命名和版本 Maven 工件?有没有更好的办法?除了简单地更改版本控制和命名方案之外,也许我可以对 Maven 结构进行一些更改?但我需要将开发和 QA(发布)SCM 分支分开。

“开发”/“生产”的专家分类器是一个合理的选择吗?

<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>16-SNAPSHOT</version>
<classifier>D</classifier>

据我所知,发布工件的常见命名扩展只是工件的名称,没有任何内容,只有指定的版本。开发分支将具有相同的工件名称,但带有快照。

以 twitter4j 为例。发布版本的工件名称是

twitter4j-2.5.5

他们(他的)开发版本的快照

twitter4j-2.6.5-快照

这是几乎每个人都使用的命名约定,并且被大多数工具识别。例如,我的 Nexus 存储库可以指定忽略开发版本的策略,这基本上意味着它会忽略名称中包含 -SNAPSHOT 的工件。

编辑: 对于您的后续问题:

那么,根据您的构建工具,您可以创建具有时间戳或其他唯一标识符的快照。但是,我从未听说过将某些分支逻辑嵌入到工件的名称中,以便连续 int 服务器可以区分它。从工件的角度来看,它要么是一个版本,要么是一个快照,我没有看到将更多逻辑嵌入到工件名称中的好处,只是因为你的 Hudson 允许你这样做。老实说,你的发布周期对我来说似乎不错,但它需要对你的 Maven 工具进行一些微调。如果您不能忍受这一点,我建议您使用分类器而不是依赖名称,因为调整集成服务器总是比许多依赖标准命名约定的插件更容易。总之,我相信您走在正确的道路上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 不同分支版本控制的最佳实践 [开发、质量保证/预发布] 的相关文章

随机推荐

  • 如何将 C# 变量添加到 html 模态

    In my ASP Net应用程序 我有一个启动模式的按钮 这onClick事件触发启动模式的 C 后台代码 然后 我调用数据表并使用数据表中的值填充字符串变量 protected void uxTicketHistoryButton Cl
  • SQL Server 2008:多语句UDF可以返回UDT吗? [复制]

    这个问题在这里已经有答案了 多语句 UDF 是否有可能返回用户定义的表类型 而不是在其返回参数中定义的表 所以而不是 CREATE FUNCTION MyFunc p1 int p2 char RETURNS SomeVar TABLE c
  • 从用户定义的设置中设置 Info.plist 中的布尔属性

    通过用户定义的设置在 Info plist 文件中设置属性非常简单 只需使用 YOUR SETTING NAME 作为值即可 但是 是否可以对布尔属性执行此操作 布尔值的 plist 文件中的结构是
  • 从 Android 上的 Gmail 应用程序下载附件的意图过滤器

    我有带有意图过滤器 ACTION VIEW 的Android应用程序来打开文件并将其导入到我的应用程序中 我希望将文件附件从 Gmail 应用程序下载到我的应用程序中 某些文件类型 即 jpg png txt 可以正确保存 但有些文件类型则
  • 浮点数输出中的“%!s”是什么?

    我得到的坐标 位置 是 2 个 float64 数字的输出 它看起来像这样 s float64 42 539679 s float64 42 601339 这是我第一次看到这样的东西 那么 s 是什么 TypeOf 表示 s float64
  • 如何在 Spring Boot 中从 application.yml 读取具有特殊字符的属性

    应用程序 yml mobile type mobile codes BlackBerry BBSS Samsung SAMS Samsung Vodafone SAMSVV 从应用程序 yml 文件中读取 三星 沃达丰 密钥时 我们得到了
  • 如何替换 SwiftUI 中已弃用的 .animation() ?

    The animation 修饰符在 iOS 15 中已被弃用 但我不确定我是否理解 Xcode 建议的等效项 animation value works animation easeInOut duration 2 animation w
  • 使用 Mercurial 在多个服务器上自动进行 Web 部署

    最近 当我们开始使用 Mercurial 进行 Web 开发时 我一直在研究 Mercurial 的一些工作流程 我们需要一种自动化的方法来将推送到测试和实时实例的更改传播到多个端点 这是这个想法的示意图 Dev Push V Push L
  • 将日历转换为本地日期

    我决定从 5 5 升级到 Optaplanner 7 5 Nurseroster 但遇到了一些愚蠢的问题 下面是其中之一 我之前使用的例程如下 然而现在新版本需要 LocalDate 我有一个 MySql 数据库后端 用户通过日历选择名册日
  • 插入 SQL VBA

    我试图选择第一个表中但不在第二个表中的记录 并使用 VBA 中的 sql 语句将它们插入到第二个表中 我已在下面启动它 但我不确定为什么它不起作用 我对 sql 相当陌生 因此我们将不胜感激 MySQL INSERT INTO Client
  • 无法将 R 中的因子转换为数字

    我试过了 i lt as numeric as character Impress i lt as numeric as character levels Impress i lt as numeric paste Impress 我总是得
  • 使用 LCDS 将不可变的 Java 类序列化为 ActionScript

    我有一个复杂的对象 该对象由 LCDS DataServices 数据管理进行管理 并使用自定义汇编程序进行创建 更新等 绝大多数对象层次结构都已正确序列化 反序列化 但在序列化不可变的 java 类时我遇到了障碍 在仅使用 java 的世
  • 使用 chrome.storage.local.set 存储数据的安全性如何

    我使用 chrome storage local set 将选项数据存储在 chrome 扩展中 这些数据的安全性如何 有权访问其存储文件的任何人都可以轻松读取它吗 它不安全 并且根据 chrome storage 官方文档 https d
  • 悬停标题文本和背景的本机/默认颜色

    在 chrome firefox 中 将鼠标悬停在元素上会显示其标题 标题为黄色背景和黑色文本 有谁知道exact每种颜色都是十六进制还是 RGB 谢谢 蒂姆 拍摄屏幕截图 在 Photoshop 中打开它 使用颜色选择器查找值 在 OSX
  • C++ Protobuf 添加已分配的重复数字字段

    我有一条简单的消息 其中包含大量重复的数字字段 syntax proto3 option cc enable arenas true message bigData repeated double info 1 在运行时 数据到达时已经分配
  • 如何绘制不断变化的图形

    以前没有这样做过 除了在java中 https stackoverflow com questions 3742731 java how to draw constantly changing graphics 看看怎么样史蒂夫 麦克劳德
  • 当有预定义高度时如何将文本放置在底部!

    这应该是非常微不足道的事情 但事实并非如此 我有一个预定义的锚点高度 我想将文本放置在底部 li a class my text My Text a li 我使用了以下 CSS 但不起作用 文本仍然显示在顶部 a my text backg
  • 在scale_y_log10变换后,背景填充(通过geom_rect)被删除

    我想向使用分组数据 因子 x 轴 和对数刻度 y 轴创建的绘图添加背景填充 添加对数刻度后 背景填充将被删除 这是一个错误 还是我做错了什么 可重现的示例数据 我将使用mtcars数据 但随着cyl变量作为因子 这是模仿我的数据的最简单的数
  • 管理用户项目权限

    我刚刚创建了一个 Visual Studio Online 帐户并添加了一个新用户 如何管理该用户的项目权限 当我以管理员身份登录时 我浏览了每个可用页面 但找不到任何内容 我唯一能做的就是将用户添加为新项目的成员 添加了新用户 添加用户作
  • Maven 不同分支版本控制的最佳实践 [开发、质量保证/预发布]

    我有几个在不同分支上开发和发布的项目 即发展 and release 这个过程运行得很好 但不幸的是它有一些缺点 我一直想知道是否有更好的版本控制方案适用于我的情况 主要开发发生在开发分支上 即 Subversiontrunk但这并不重要