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

时间:2018-01-15 17:29:45

标签: git maven jenkins nexus maven-release-plugin

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

使用Maven发布目标

release:clean release:prepare release:perform

Maven Release插件:

<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项目创建单独的存储库。

你能告诉我怎样才能更好地实现它。

我还想了解它是如何在其他公司管理的。

1 个答案:

答案 0 :(得分:0)

我认为最好(最简单和最强大)的方式可用于Maven&amp; Nexus是:

  • 使用SNAPSHOT存储库。默认情况下,在上传到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的描述),并在部署期间将其复制粘贴。
  • 因为您知道该版本,所以您可以将其传递给下一个使用自动部署构建部署管道的作业。

优点:

  • 没有标记,没有发布版本(它们与持续交付不兼容)
  • 非常简单,几乎没有自定义脚本
  • 使用现有工具的功能。例如。您可以在Nexus中配置任务以删除非常旧的快照以释放空间。
  • 不依赖于您管理VCS存储库的方式