云客户?
开始免费>
升级MyJFrog >
云有什么新鲜事>

搜索





概述

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

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

这就是库布局插件发挥作用的地方!

自定义布局的自由

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

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



捆绑的布局

Artifactory来啊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使用路径模式为存储的文件构造模块信息。然后使用这个模块信息来促进上面提到的所有特性(版本清理、交叉回购路径转换等)。

路径模式令牌

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

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

以下令牌可用:

(组织)

代表了组织字段,其中级别用圆点分隔('”),像常春藤。例如:“org.slf4j

(orgPath)

代表了组织字段,其中级别由路径分隔符分隔('/), 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实例的全局级别上配置的,因此任何布局都可以跨任意数量的存储库共享和重用。

布局配置

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

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

测试布局

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

路径模式

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

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

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

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

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

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

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

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

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

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

  • Maven的文件夹集成修订是不变的快照添加到基本版本(“1.2-SNAPSHOT”)中,因此正则表达式为

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

    \ d {14}

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

  • Maven的文件集成修订可以是快照常量("1.2-SNAPSHOT")或时间戳,其中日期和时间用一个点('.')隔开,再加上一个破折号('-')和一个建筑号("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约定。

虚拟存储库配置

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

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

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

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


  • 没有标签
版权所有©2022 JFrog有限公司