Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven版本控制和发布GIT存储库_Git_Maven_Jenkins_Nexus_Maven Release Plugin - Fatal编程技术网

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

Maven版本控制和发布GIT存储库,git,maven,jenkins,nexus,maven-release-plugin,Git,Maven,Jenkins,Nexus,Maven Release Plugin,我在一个GIT存储库中有多个maven项目。我想为maven项目执行单独的发布,将发布版本推送到nexus,跳过标记并增加快照和提交 使用Maven发布目标 release:clean release:prepare release:perform Maven发布插件: <plugin> <groupId>org.apache.maven.plugins</groupId> &l

我在一个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>

org.apache.maven.plugins
maven发布插件
${maven.releaseplugin.version}
v@{project.version}
真的
释放
由于标记发生在存储库中,我想跳过GIT中的标记。我们将在代码冻结窗口中手动进行标记

我希望避免为maven项目创建单独的存储库

你能告诉我怎样才能做得更好吗

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

我认为Maven&Nexus提供的最佳(最简单、最可靠)方法是:

  • 使用快照存储库。默认情况下,上载到Nexus时,快照将替换为已解析的快照版本-它包含时间戳和增量编号。您可以自己生成和设置此版本:
  • 将此版本放在某个可见的位置(例如Jenkins Build的描述)并在部署期间复制粘贴
  • 因为您知道该版本,所以可以将其传递给下一个作业—使用自动部署构建部署管道
优点:

  • 无标签,无发布版本(与连续交付不兼容)
  • 非常简单,几乎没有自定义脚本
  • 使用现有工具的功能。例如,您可以将Nexus中的任务配置为删除非常旧的快照以释放空间
  • 不取决于您如何管理VCS存储库

根据我的经验,在一个git回购中管理多个相关项目简直是一场噩梦。如果可能的话,我建议你将项目分成几个回购协议。大家好,在我们开始解决之前。我想详细了解一下您遇到的问题,以便我能清楚地理解。我了解像谷歌和Facebook这样的公司维护单一存储库。。“我想详细了解您遇到的问题,以便我能清楚地理解。”评论不是进行此类讨论的最佳场所。请在聊天中找到我,我会在有时间时作出回应。
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