artifactory如何处理Releases / snapshots策略?

时间:2016-10-06 09:26:41

标签: gradle artifactory gradlew gradle-plugin

使用Artifactory OSS版本4.2.1。我的libs-release-local repo设置为仅处理版本。根据这种情况,每当有人尝试使用gradle将SNAPSHOT(1.3-SNAPSHOT / sample-war-app-1.3-SNAPSHOT.jar)文件部署到此文件夹时,由于其快照/发布处理策略,它应该抛出错误409。偶尔会有一些文件被部署到版本中。有人可以解释一下神器是如何识别发布和快照的吗?

1 个答案:

答案 0 :(得分:2)

Artifactory使用正则表达式将您的部署路径与标准maven存储库布局相匹配。假设工件的部署路径与此正则表达式匹配,Artifactory将能够对路径进行标记并计算出每个路径元素所代表的内容(即groupId,artifactId,版本等)。您可以阅读有关存储库布局here的更多信息。

发布/快照处理功能构建在此机制之上,因为它需要知道路径中的版本元素是否代表快照版本(否则它是发布版本),然后根据该机制拒绝或接受部署回购的处理政策。

maven repos使用的默认'maven-2-default'布局(例如'libs-release-local' repo)为快照定义了这个正则表达式标识符

SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))

(你可以在Admin - > Layouts(在Repositories下) - > maven-2-default)中找到它

因此,有效的快照路径可以是:

  • com/uriahl/myArtifact/1.0-SNAPSHOT/myArtifact-1.0-20161001.084249-1.jar

  • com/uriahl/myArtifact/1.0-SNAPSHOT/myArtifact-1.0-SNAPSHOT.jar

否则,如果路径与maven布局不对应,Artifactory将无法知道您上传的工件是快照工件还是发布工件,在这种情况下,您最终可能会获得快照或发布它们不应该是的工件,但它也意味着你不是根据存储库布局来部署它们。

如果单击相应的布局进行编辑并使用“测试工件路径解析”部分,也可以验证部署路径。如果您正在验证快照路径,并且您发现Artifactory无法在给定路径中找出工件的“文件集成修订版”,或者它错误地解释了路径,那么它将是一个强大的指示处理策略功能也无法正常工作。