我在一个 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(使用前将#替换为@)