云客户?
免费开始>
在MyJFrog >中升级
云b>的新功能

搜索







概述

随着构建工具和框架的选择越来越多,也有很多道路S,其中模块可以存储在存储库中。

最初,系统支持处理模块的Maven布局约定(并依赖于Maven特定的元数据)。然而,你的构建工具应该能够“自然地”与存储库“对话”,所以如果你正在使用Ivy或Gradle,没有必要为了“适应”而将它们配置为使用Maven约定。此外,组合和链接使用不同布局的存储库应该是开箱即用的。

这就是Repository Layouts插件发挥作用的地方!

自定义布局的自由

Repository Layouts允许您完全控制每个存储库使用的布局,并使用布局定义来标识模块工件和描述符。对于任何构建技术,存储库布局都支持这些智能模块管理设施:

  • 自动快照/集成版本清理
  • 删除旧版本
  • 远程和本地布局之间的转换
  • 移动或复制时2个本地布局之间的转换
  • 解析从虚拟存储库到其底层存储库的转换(其中虚拟存储库定义了自己的布局)
页面内容



捆绑的布局

人工来了ut-of-the-box有一些默认的,预定义的布局,不需要额外的配置:

  • Maven 2/3
  • 艾薇(默认布局)
  • Gradle(码头缓存默认布局)
  • Maven 1

支持Artifactory OSS中的存储库布局

用于转换和分辨率的布局配置仅对Artifactory Power Pack用户可用。仅支持OSS版本的用户配置它们的存储库使用与Artifactory绑定的默认存储库布局。

OSS版本仅支持自动快照/集成版本清理和删除旧版本特性。


存储库布局使用的模块和路径模式

模块字段

为了支持智能模块管理,Artifactory必须为存储的文件构建模块信息。Artifactory根据作为Repository Layout配置的一部分定义的路径模式信息构建此信息(详细内容如下)。

模块由各种子元素或字段组成,这些子元素或字段通常在存储工件的路径中表示。

Artifactory识别的模块子元素如下所示。至少,模块标识需要三个强制性字段:

  • 组织
  • 模块
  • 基础版本。

描述

例子

强制性的

组织

标识工件组织的文字序列

org.slf4j

(勾选)"></p></td>
                     </tr>
                     <tr>
                      <td class=

模块

标识工件模块的文字序列

slf4j-api

(勾选)"></p></td>
                     </tr>
                     <tr>
                      <td class=

基础修改

标识工件版本的基本修订部分的文字序列,不包括任何集成信息

1.5.10"或者在集成修订的情况下"1.2快照“基本修正是”1.2

(勾选)"></p></td>
                     </tr>
                     <tr>
                      <td class=

文件夹集成修订

标识工件路径中文件夹名称中使用的集成修订部分的文字序列,不包括基本修订

如果有集成修订1.2快照"文件夹集成修订是"快照

(错误)"></p></td>
                     </tr>
                     <tr>
                      <td class=

文件集成修订

标识工件文件名中的集成修订部分的文字序列,不包括基本修订

如果有集成修订1.2 - -20110202.144533 3“文件集成修订是”20110202.144533 - 3

(错误)"></p></td>
                     </tr>
                     <tr>
                      <td class=

分类器

标识工件分类器的文字序列

来源

(错误)"></p></td>
                     </tr>
                     <tr>
                      <td class=

扩展

标识工件扩展的文字序列

邮政编码

(错误)"></p></td>
                     </tr>
                     <tr>
                      <td class=

类型

标识工件类型的文字序列。
通常在工件的扩展不能作为工件的类型被重用时使用

java源代码

(错误)"></p></td>
                     </tr>
                    </tbody>
                   </table>
                  </div>
                  <h3 id=使用模块字段定义路径模式

在Repository Layout的配置中使用路径模式。

该模式类似于Ivy模式,用于定义工件解析和发布路径的约定。

Artifactory使用路径模式为存储的文件构造模块信息。然后使用该模块信息来促进上面提到的所有功能(版本清理,跨repo路径转换等)。

路径模式令牌

路径模式由令牌(如下所述)、路径分隔符(/'),可选括号(''和'')和字面量('”、“-”,等等)。如上所述,令牌是按照模块字段建模的。

可以为存储库中的每个工件定义路径模式,也可以为描述符类型的工件(例如,a.pom或者一个文件)。

以下令牌可用:

(组织)

代表了组织字段,其中级别由点分隔('), a-la Ivy。例如:org.slf4j

(orgPath)

代表了组织字段,其中级别由路径分隔符('/’),a la Maven。例如:org/slf4j

(baseRev)

代表了基础修改

(模块)

代表了模块

(folderItegRev)

代表了文件夹集成修订

(fileItegRev)

代表了文件集成修订

(分类)

代表了分类器

(ext)

代表了扩展

(类型)

代表了类型

[customTokenName < customTokenRegex >)

自定义令牌。当提供的默认值不足时,可用于创建新类型的令牌。

例如,[myIntegRev < ITEG (?: [0 - 9] +) >)创建一个新的自定义令牌myIntegRev这与单词匹配ITEG后面跟一个破折号和至少一个数字。

自定义令牌

在存储库布局中使用自定义令牌时,请确保布局以[orgPath] /[模块)如果(模块)如果布局中缺少令牌,则一些REST API调用将无法工作。

多个自定义令牌

Artifactory支持任意数量的自定义令牌,但是当提供同一键的多个自定义令牌时,Artifactory只考虑第一个出现的正则表达式,而用重复表达式替换其余的(即使每个出现都有不同的正则表达式值)。

例如:

[custom1 < + >] / [custom1 <。* >]/ [custom1 < [0 - 9] + >)

翻译:

< custom1 > + 1 / \ / \ 1

可选部分

若要在路径模式中指定标记或标记和文字序列为可选的,请将该序列用可选圆括号'括起来。'和'的文字。

例如,模式“(模块)(-(分类))“两者都匹配”bobs-tools-sources"和"bobs-tools和模式[baseRev] ([fileItegRev])“两者都匹配”1.2快照"和"1.2”。

工件路径模式

工件路径模式表示期望存储所有模块工件的典型结构。

例如,

  • 要表示正常的Maven工件路径:org/eclipse/jetty/jetty-ajp/7.0.2.v20100331/jetty-ajp-7.0.2.v20100331.jar

    使用工件路径模式:

    [orgPath] /[模块]/ [baseRev] (- [folderItegRev]) /(模块)- [baseRev] (- [fileItegRev])(-(分类))(ext)。
  • 来表示一个默认的Ivy工件路径:org.eclipse.jetty / jetty-ajp 7.0.2.v20100331 /罐/ jetty-ajp-7.0.2.v20100331.jar

    使用工件路径模式:

    [机构]/[模块]/ [baseRev] - [folderItegRev] /[型]s /(模块)——(baseRev) (- [fileItegRev])(-(分类))(ext)。

描述符路径模式

描述符路径模式用于识别描述符文件(如.pom文件)。

使用特定的描述符路径模式是可选的。当不使用时,Artifactory使用工件路径模式为描述符文件构造模块信息。

尽管描述符路径模式是可选的,但它们的使用却是可选的强烈推荐在特殊描述符的情况下,比如Ivyivy_-1.0.xml和Mavenbobs-tools-1.0.pom

例如,

  • 要表示一个正常的Maven描述符路径:org/eclipse/jetty/jetty-ajp/7.0.2.v20100331/jetty-ajp-7.0.2.v20100331.pom

    使用描述符路径模式:

    [orgPath] /[模块]/ [baseRev] (- [folderItegRev]) /(模块)- [baseRev] (- [fileItegRev])(-[分类器]).pom
  • 来表示一个默认的Gradle描述符路径:org.eclipse.jetty / jetty-ajp / ivy-7.0.2.v20100331.xml

    使用描述符路径模式:

    (组织)/(模块)/ ivy - [baseRev] - [fileItegRev] . xml

配置

存储库布局是在Artifactory实例的全局级别上配置的,因此任何布局都可以在任意数量的存储库之间共享和重用。

布局配置

中的管理员用户可以使用布局配置政府模块下存储库|布局

JFrog Cloud新界面(测试版)

在任务栏上,单击(平台配置),并选择Artifactory设置>布局。到l获取更多信息,请点击在这里

可以通过单击“新建”或复制现有布局从头创建其他布局。

测试布局

一旦您完成了布局的配置,您就可以在工件路径上对其进行测试,并查看系统如何使用布局定义从路径构建模块信息。

路径模式

如上所述,它们用于定义工件路径模式和描述符路径模式(可选)。

在路径的目录部分使用模式

为了获得最佳的路径匹配结果,强烈建议工件和描述符模式也包含强制令牌((组织)(orgPath)(模块)(baseRev))在目录结构本身内。
例如,Gradle的工件路径模式:

[机构]/[模块]/ [baseRev] (- [folderItegRev]) /(模块)- [baseRev] (- [fileItegRev])(-(分类))(ext)。

用于文件和文件夹集成修订的正则表达式

这些字段应该包含精确匹配并描述集成修订(不包括基本修订)格式的正则表达式,因为它们在工件的文件名和路径结构文件夹名称中是预期的。

避免在regexp中使用捕获组语法

在这些字段中输入的正则表达式将被包装并作为单个捕获组处理。

避免在表达式中引入任何捕获组。不这样做可能会导致意想不到的行为和妥协匹配器的准确性。

文件夹集成修订正则表达式示例:

  • Maven的文件夹集成修订只是一个常量快照附加到基本修订(“1.2-SNAPSHOT”),因此正则表达式为

    快照
  • Ivy的默认文件夹集成修订通常等于文件集成修订,通常是一个14位的时间戳(“5.1-20101202161531”),因此正则表达式可以是

    \ d {14}

文件集成修订正则表达式示例:

  • Maven的文件集成修订可以是快照常量(“1.2-SNAPSHOT”)或时间戳,其中日期和时间由点(“。”)分隔,并加上一个破折号(“-”)和一个build-number(“2.3-20110108.100922-2”),因此正则表达式应该能够同时适应它们

    快照| (?:?:\ d{8}。\ d {6}) - (?: \ d +))
  • Ivy的默认文件集成修订通常是一个14位的时间戳(“5.1-20101202161531”),通常等于文件夹集成修订,因此正则表达式可能与文件示例中的建议相同

    \ d {14}

存储库配置

在定制布局之前

在引入自定义存储库布局之前创建的存储库将自动配置为默认的Maven 2布局。

本地存储库配置

布局对于本地存储库是必需的,因为它们定义了存储工件的结构。


当您创建一个新的存储库时,Artifactory将根据包类型为存储库选择。


远程存储库配置

布局仅对远程存储库缓存配置是强制性的,但是,您也可以指定远程存储库本身的布局。

如果远程存储库本身使用与为缓存选择的布局不同的布局,则所有发送给远程目标的请求都将从缓存布局的路径转换为远程布局的路径。

例如,远程存储库http://download.java.net/maven/1根据Maven 1约定存储其工件。您可以配置此存储库的缓存以使用Maven 2布局,但是要设置远程布局映射到Maven 1号。这样,存储库缓存处理Maven 2请求和工件存储,而向远程存储库发出的请求被转换为Maven 1约定。

虚拟存储库配置

您还可以为虚拟存储库配置布局。

配置后,可以根据虚拟存储库布局发出所有解析请求。当试图解析对虚拟存储库的请求时,系统根据从虚拟请求构造的模块信息,尝试将请求路径转换为每个嵌套存储库的布局。

在以下情况下,请求路径不会被转换,请求将传递到具有原始指定路径的嵌套存储库:

  • 无法构造模块信息
  • 虚拟模块信息不能映射到嵌套的存储库(例如,其中一侧缺少字段)。
  • 虚拟存储库或嵌套存储库未配置布局


  • 没有标签
版权所有©2023 JFrog Ltd.