首页 > 解决方案 > Maven 和 JFROG 神器

问题描述

我正在使用“mvn install”命令,它使用 groupId、artifactID 和版本号将工件推送到 libs-release-local 下的 JFROG。

我的问题是:工件版本是 1.2.1,它正在替换新工件并删除旧工件。我可以在 build_Number 下推送​​工件吗?

就像 Jfrog 目标仓库中的 Ex:libs-release-local/groupIdname/artifactIdname/buildNumber/version(artifact)?

输出应该是这样的:如果内部版本号是 1 并且版本是 1.2.1。

libs-release-local groupIdname artifactIdname 1 1.2.1 .jar

标签: mavenjenkinsmaven-3artifactoryjfrog-cli

解决方案


正如您所暗示的那样,“发布”工件在二进制存储库中应该被认为是不可变的,并且永远不会被覆盖。您所描述的似乎完全适合快照工件模型,因此您应该避免在这里重新发明轮子。

此外,Maven 在存储库布局方面几乎没有灵活性,因此您不能像那样违反标准的 Maven 存储库布局。

您应该做的是实施快照版本控制。事实上,SNAPSHOT 版本控制模型已经包含构建号和表示部署时间的时间戳,作为工件部署路径的一部分,使得每个部署(即构建)都是唯一的。最终结果是每个构建都部署到唯一路径,并且您的工件在开发阶段不会被覆盖。当您准备好从开发阶段过渡到发布阶段(即最终的工件版本)时,您可以升级现有的快照版本(升级有时意味着将版本从快照更改为发布)或启动一个独特的发布构建代表最终产品,不应被覆盖。


推荐阅读