Maven 版本控制和发布 GIT 存储库

2023-12-26

我在一个 GIT 存储库中有多个 Maven 项目。我想对 Maven 项目执行单独的发布,将发布版本推送到 Nexus,跳过标记并增加快照和提交。

使用的 Maven 发布目标

release:clean release:prepare release:perform

Maven 发布插件:

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${maven.releaseplugin.version}</version>
                    <configuration>
                        <tagNameFormat>v@{project.version}</tagNameFormat>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <releaseProfiles>releases</releaseProfiles>
                    </configuration>
                </plugin>

由于标记发生在存储库上,我想跳过 GIT 中的标记。我们将在代码冻结窗口期间手动进行标记。

我会避免为 Maven 项目创建单独的存储库。

你能告诉我如何以更好的方式实现它吗?

我也想了解其他公司是如何管理的。


我认为 Maven 和 Nexus 可用的最佳(最简单且可靠)的方法是:

  • 使用快照存储库。默认情况下上传到 Nexus 时,SNAPSHOT 会替换为已解析的快照版本 - 它包含时间戳和增量号。您可以自己构建和设置此版本:
VERSION=`mvn help:evaluate -Dexpression=project.version | grep -v "^\["| grep -v Download`
VERSION=${VERSION/%-SNAPSHOT/} #get rid of -SNAPSHOT if it's there
VERSION="$VERSION-"`date +"%Y%m%d.%H%M%S"`"-$BUILD_NUMBER"
mvn versions:set -DnewVersion=$VERSION
  • 将此版本放入某个可见的位置(例如 Jenkins Build 的描述)并在部署期间复制粘贴它。
  • 因为您知道版本,所以可以将其传递到下一个作业,通过自动部署构建部署管道。

Pros:

  • 无标记,无发布版本(它们与持续交付不兼容)
  • 非常简单,几乎不需要自定义脚本
  • 使用现有工具的功能。例如。您可以在 Nexus 中配置任务来删除非常旧的快照以释放空间。
  • 不取决于您管理 VCS 存储库的方式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 版本控制和发布 GIT 存储库 的相关文章

随机推荐

  • 如何设计偶数和奇数元素的样式?

    是否可以使用 CSS 伪类来选择列表项的偶数和奇数实例 我希望以下内容能生成交替颜色的列表 但我得到的是蓝色项目的列表 li color blue li odd color green li even color red ul li ho
  • 使用 axios 下载 zip 并在内存中使用 adm-zip 解压(电子应用程序)

    我需要下载一个文件axios并将其解压缩到电子应用程序的内存中 我读过一些SO线程 e g https stackoverflow com questions 10359485 how to download and unzip a zip
  • JVM如何确保只有一个线程可以获得一个对象的锁?

    我们大多数人都知道 每当线程访问对象的同步块时 JVM 都会将该对象的锁交给线程 JVM如何确保只有一个线程可以访问一个对象的锁 JVM 使用操作系统提供的一些锁定功能 例如信号量对象 所以现在的问题是操作系统如何做到这一点 通常这些东西都
  • SwiftUI:如何更改 TabbedView 中所选项目的图像

    有没有办法改变 SwiftUI 中选项卡项目的图像TabbedView什么时候选择或取消选择 TabbedView selection selection Text Home tabItem Image systemName house T
  • 错误 MSB4057:名为 MVCWebUIComponent.csproj 的项目文件中不存在目标“Package”

    我有一个文件名MVCWebUIComponent csproj我将以下几行添加到我的文件中
  • Java 8 中的 map() 和 flatMap() 方法有什么区别?

    在 Java 8 中 有什么区别Stream map http docs oracle com javase 8 docs api java util stream Stream html map java util function Fu
  • 使用 Flexbox 将 div 水平和垂直居中

    我正在尝试集中一些div使用 Flexbox 垂直和水平放置 但它没有按预期工作 这是一张图片 说明了我所拥有的和我所期望的 这是代码 div 111111 div div 222222 div div 333333 div EDIT 当然
  • 访问同一包中的私有内部类

    我有两个编译单元 public class OuterClass private static class InnerClass public String test return testing123 public static void
  • 应用内购买:动态添加非消耗品

    我正在开发一个应用程序 用户可以在其中购买数字地图 图表等 我想将这些包含在应用内购买中 问题是我事先不知道会有多少图表 因为我是从网络的另一个来源获取它们的 可能有数百个 我有一个服务器定期从该源获取图表并将其存储在本地 未来可能会出现新
  • Azure CosmosDB:存储过程根据查询删除文档

    目标是输入一个简单的字符串查询 例如 SELECT FROM c WHERE c deviceId device1 并且所有生成的获取文档都需要删除 我发现了关于使用存储过程执行此操作的非常旧的帖子 但我无法让它与 新 用户界面一起正常工作
  • 如何使用 IPython 表示图形

    最近我发现IPython notebook这是一个强大的工具 作为一名 IT 学生 我一直在寻找一种用 Python 表示图形的方法 例如 我想知道是否有一个图书馆 例如numpy or matplotlib 从中可以得出 1 3 2 2
  • JPA 中的瞬态字段和查询中的设置

    我们如何从选择查询中加载 JPA 中的瞬态字段 例如我有这个查询 SELECT table1 SELECT SUM field from table2 WHERE theField table1 flag as total FROM tab
  • 为什么 C# 中某些迭代器比其他迭代器更快?

    有些迭代器速度更快 我发现这一点是因为我收到鲍勃 塔博尔 Bob Tabor 的来信9频道 http channel9 msdn com 永远不要复制和粘贴 我习惯于这样做来设置数组值 testArray 0 0 testArray 1 1
  • 如何在行为测试.feature 文件的示例表中使用管道字符?

    我有一个行为场景大纲 我需要使用管道字符 作为示例表中的单元格值 但我不知道如何转义这个字符 以免被视为列分隔符 我越来越Malformed table当我尝试使用时出错 顺序 据我所知 从 1 2 5 版本 发布时的当前版本 开始 不可能
  • 如何在函数中编写函数(list_map)

    你好 我最近问了一些关于C中链表的问题 链接是在这里找到的 https stackoverflow com questions 2106691 c issue cant figure how to assign pointer to beg
  • 何时以及为何使用一组 Executor

    我一直在阅读 Android 文档中有关 Executor 的内容 如果我理解正确的话 它用于多线程管理 并且它会为您完成一些工作 例如在需要时生成新线程 或者您可以选择自己管理事情 在下面的示例中 使用一组执行器而不是一个执行器 所以它就
  • 如何在Python中更新字典中键的值?

    我有一本代表书店的字典 键代表书名 值代表当前书籍的份数 当书籍从商店出售时 书籍的册数必须减少 我编写了一个代码来减少已售书籍的副本数量 但是在更新后打印词典时 我得到的是初始词典 而不是更新后的词典 n input Enter numb
  • 使用端口 Ping ip,不返回任何内容,PHP/APACHE

    我正在使用以下命令来获取 IP 或域的状态 我如何 ping 端口 80 提供端口后 根本不返回任何内容 尝试通过 80 和 80 将其添加到末尾 任何想法表示赞赏 如果您想要了解给定主机是否接受端口 80 上的 TCP 连接 您可以这样做
  • Android Studio 找不到 AndroidManifest.xml

    我正在使用 Android Studio v0 2 x 我刚刚创建了一个具有默认设置的新应用程序 File gt 新项目 gt 然后一步步进行 当我构建它时 它失败了 日志是 Android 源生成器 MyApplication Andro
  • Maven 版本控制和发布 GIT 存储库

    我在一个 GIT 存储库中有多个 Maven 项目 我想对 Maven 项目执行单独的发布 将发布版本推送到 Nexus 跳过标记并增加快照和提交 使用的 Maven 发布目标 release clean release prepare r