【问题标题】:How artifactory handles Releases/ snapshots policy?工件如何处理发布/快照策略?
【发布时间】:2016-10-17 06:27:43
【问题描述】:

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

【问题讨论】:

    标签: gradle artifactory gradlew gradle-plugin


    【解决方案1】:

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

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

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

    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 无法识别给定路径中工件的“文件集成修订版”,或者它错误地解释了路径,这将是一个强大的指示处理策略功能也无法正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 2018-10-22
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多