使用 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/