artifactory如何处理发布/快照策略



使用Artifactory OSS版本4.2.1。我的lib -release-local repo设置为只处理版本。根据这个场景,每当有人尝试使用gradle将一个快照(1.3-SNAPSHOT/sample-war-app-1.3-SNAPSHOT.jar)文件部署到这个文件夹时,由于它的快照/发布处理策略,它应该抛出一个错误409。但偶尔会有一些文件被部署到发行版中。谁能解释一下artifactory是如何识别一个发布和一个快照的?

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

发布/快照处理能力是建立在这个机制之上的,因为它需要知道路径中的version元素是否代表快照版本(否则是发布版本),然后根据repo的处理策略拒绝或接受部署。

maven repo使用的默认'maven-2-default'布局(例如'lib -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布局工件,则无法知道您正在上传的工件是快照工件还是发布工件,在这种情况下,您可能最终得到快照工件或发布工件,它们不应该在哪里,但这也意味着您没有根据存储库布局部署它们。

您还可以验证部署路径,如果您点击相应的布局来编辑它,并使用"Test Artifact Path Resolution"部分。如果您正在验证快照路径,并且您看到Artifactory无法识别给定路径中工件的"File Integration Revision",或者它不正确地解释了路径,那么这将是一个强烈的迹象,表明处理策略特性也不能正常工作。

最新更新