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 存储库 的相关文章

  • java.lang.IllegalStateException - 提交响应后无法创建会话

    我在我的项目中使用 JSF PrimeFaces 我为此准备了一个Maven项目 当我编译项目并加载主页后 我收到以下异常 java lang IllegalStateException Cannot create a session af
  • primefaces 二维码未显示?

    I am using primefaces to develop a web app I am trying to show the bar code on mhe webpage All coders are shown except t
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • 丢失了我在 GIT 中的提交。你会不小心删除提交吗?

    我正在使用 git gui 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • 无法从 Sourcetree 拉取 Git 远程存储库

    我生成了 ssh 密钥并配置了我的 git 和 SourceTree 我可以 git pull 并从 Git bash 执行其他操作 注意 我在 bashrc 中添加了以下内容以使其正常工作 eval ssh agent ssh add 然
  • 如何从引用的java项目访问静态资源(WEB-INF)文件夹中的文件?

    我有一个 Web 应用程序 其中包含一个作为 spring bean 公开的应用程序服务之一的配置 xml 文件 另外 我在同一工作区中有一个独立的 java 应用程序 它从其 pom xml 引用我的 Web 应用程序项目 它使用 Spr
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • Swagger for Micronaut 与 Maven

    我想从 Spring Boot 2 切换到 Micronaut 框架 而且我在 Swagger 设置上遇到了困难 在 Spring Boot 2 项目中 我有以下依赖项
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Netbeans(和 Maven)运行正确的上下文根

    当我从 Netbeans 7 2 运行项目时遇到了一些问题 我还使用 Glassfish 3 1 2 服务器 事实上 我正在将现有项目从 Ant 迁移到 Maven 我的 pom xml 已完成 并且我已经使用了上下文根的自定义 如下所述
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • 如何让 Aptana Studio 记住 git ssh 密码

    我找不到任何有关如何获得 Aptana Studio 的内置 git 支持来记住执行推 拉操作的 ssh 密码的指南 信息 有人有什么想法吗 Aptana Studio 实际上是内置的 GIT 程序 它将在 Windows 上的 C Use
  • `git push` -- 没有输出,什么也没有发生

    touch test git add test git commit m test git push u origin master 这奏效了 该文件已上传到存储库 rm test cp R website website git rm t
  • Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类

    我正在尝试为我的 CI 流程编写一个 Jenkins 共享库 我想引用一个类 src定义在全局函数内的文件夹 vars文件夹 因为它允许我将大部分逻辑放在类中而不是全局函数中 我遵循 Jenkins 官方文档中记录的存储库结构 Jenkin

随机推荐

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

    是否可以使用 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