关于Maven:发布快照工件以使Devops工件蔚蓝

Publish snapshot artifacts to azure devops artifacts

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

根据我的理解,这意味着Azure工件无法用于存储正在进行的快照工件。正确吗?

如果是,是否还有其他替代方法仍在使用Azure DevOps?我可以看到可以将工件发布到Azure Blob存储,但是大概这是您必须在Azure工件的现有使用之上付出的代价。我还可以看到有许多GitHub Maven插件可将GitHub存储库视为Maven存储库,但找不到使用Azure DevOps存储库作为发布Maven工件的地方的类似东西。

以防万一,我在说的是基于云的Azure东西,没有内部部署。


程序包管理的前提是程序包是不可变的。这将启用一大堆原本不存在的缓存选项。程序包存储在本地程序包缓存中,可能存储在代理供稿程序包缓存中,所有这些元素均假定具有相同名称版本的程序包保持不变,并且将提供缓存的版本,而不是您推送的最新版本。大多数软件包系统都是在此前提下构建的,包括Nuget和NPM。

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

如果您不想"弄乱"您的主程序包提要,则可以出于开发目的设置另一个提要,其中包含所有中间包,然后您可以将其中一个程序包升级到主提要中,或者可以运行特定的管道(配置)以将最终程序包推送到用于稳定程序包的提要中。


n


看起来这主要是一个功能,而不是保留构建结果不变性的错误-意味着,无论该构建何时运行,它都将始终返回相同的结果。请参阅:如何在Azure Artifacts中使用相同的版本号更新Maven依赖项