maven - 将快照 Artifact 发布到 azure devops Artifact

标签 maven gradle azure-devops

我在 Azure DevOps 中设置了 Gradle 构建,它在 Azure DevOps git 存储库中编译代码,然后将生成的 JAR(作为 Maven Artifact )发布到 Azure Artifacts,如 here 所述。 .然后,其他 Azure DevOps git 存储库中的代码可以将这些组件作为依赖项引用。这对于这些组件的正式版本(具有唯一版本号)很好,但我还需要一种方法来使其适用于正在进行的快照版本。问题是我不能多次发布具有相同版本号(例如 1.2.3-SNAPSHOT)的 Artifact 。这似乎是因为 packages in Azure are immutable .

根据我的理解,这意味着 Azure Artifacts 不能用于存储正在进行的快照 Artifact 。那是对的吗?

如果是,是否还有其他选择仍然使用 Azure DevOps?我可以看到我可以publish artifacts to Azure Blob Storage ,但据推测,这是您必须在 Azure Artifacts 的现有使用基础上支付的费用。我还可以看到有很多 GitHub Maven plugins将 GitHub 存储库视为 Maven 存储库,但我找不到任何类似的东西可以使用 Azure DevOps 存储库作为发布 Maven Artifact 的地方。

如果它有所作为,我说的是基于云的 Azure 的东西,没有任何内部部署。

最佳答案

包管理的前提是包是不可变的。这启用了一大堆原本不存在的缓存选项。包存储在您的本地包缓存中,可能位于代理提要包缓存中,所有这些元素都假定具有相同名称+版本的包未更改,并将提供缓存版本而不是您推送的最新版本。大多数包系统都是建立在这个前提上的,包括 Nuget 和 NPM。

创建开发快照的技巧是使用语义版本控制并为您的版本添加唯一后缀。例如 1.2.3-SNAPSHOT.1其次是 1.2.3-SNAPSHOT.2 ,有可用于 Azure Pipelines 的工具,例如 GitVersion它可以自动生成一个独特的版本 + 后缀,您可以将其传递到 Artifact 的版本中。

如果您不想“弄乱”您的主要包提要,您可以为开发目的设置第二个提要来保存所有中间包,然后您可以将这些包之一提升到您的主要提要,或者您可以运行特定管道(配置)将最终包推送到用于稳定包的提要。

关于maven - 将快照 Artifact 发布到 azure devops Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52532004/

相关文章:

java - 如何避免兄弟子模块上的 Maven 版本?

maven - Gradle 发布到私有(private)存储库 : Could not get resource maven-metadata. xml

encryption - 如何在Gradle中使用加密密码访问Maven存储库

java - Eclipse Gradle 插件 : <some pom file> cannot be read or is not a valid ZIP file

java - Spring Boot + Gradle : take VM options when I run single tests

gradle - geb-gradle-saucelabs集成的驱动程序错误

android - 找不到与 org.robolectric :robolectric:2. 3.+ 匹配的任何版本

azure - 有没有办法防止覆盖 Azure 容器注册表中的现有标签/图像?

azure-devops - 我可以将自定义任务开始/结束记录写入 VSTS 构建/发布日志吗

git - 在 Azure DevOps 中将构建服务 'user' 添加到 'Project Collection Build Services'