gradle - Artifactory 如何处理发布/快照策略?

标签 gradle artifactory gradlew gradle-plugin

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

最佳答案

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

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

默认 'maven-2-default' maven repos 使用的布局(例如 '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 是快照 Artifactory 还是发布 Artifactory ,在这种情况下,您最终可能会得到快照或发布 Artifactory 不应该是,但这也意味着您不是根据存储库布局部署它们。

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

    关于gradle - Artifactory 如何处理发布/快照策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892317/

    相关文章:

    gradle - 使一个来源集依赖于另一个

    android - 从 Jenkins 运行时未找到“assembleDebug”任务

    React-Native:无法解析配置 ':app:debugCompileClasspath'的所有依赖项

    powershell - Bamboo Powershell任务在首次运行后失败

    android - 无法获取 Crashlytics 中 native 崩溃的堆栈跟踪

    java - Logback:如何将日志写入文件

    gradle - 如何处理两个gradle插件的任务冲突?

    azure - 如何仅将选定的 NuGet 包从 Azure Pipeline 发布到 Artifactory?

    android - ProjectLayout.directoryProperty() 方法已被弃用

    gradle - 通过 gradlew 使用 -Xmx 和 -Xms 运行应用程序