bintray支持p2存储库

时间:2017-07-18 10:23:32

标签: p2 bintray

我不确定你是如何在bintray上实际管理p2存储库的?您上传的所有内容通常必须与版本和软件包相关联,但我们需要一种方法让某些文件存储库作为组合存储库的元数据或其他任何内容。 我知道这个问题已经以某种形式得到了回答,但是我需要更多的信息,特别是上传存储库范围内容的规则是什么,他们有什么样的路径可以将上传的文件驻留在存储库根目录,以及这些东西。 我不太明白为什么没有正式记录在bintray上。

1 个答案:

答案 0 :(得分:0)

Bintray在存储库下组织工件>包裹>版本。
关系是:[repository] 1---* [package] 1---* [version] 1---* [artifact] 有一个例外 - 元数据文件。主要原因是元数据文件通常包含多个版本,因此它们无法与特定版本相关联。另一个区别是版本化工件在发布后180天不能被覆盖,而元数据文件在每次发布版本时都会发生变化。这就是元数据文件基本上被称为“存储库作用域”的原因。请注意,Bintray通过其名称识别元数据文件 - 即用户无法告诉Bintray哪个工件是元数据文件。除此之外,元数据文件可以上传到任何路径,与任何其他工件相同。

例如,在P2中,以下文件名被认为是元数据文件(我可能错过了一些):
artifacts.xml/.jar/.xml.xzcontent.xml/.jar/.xml.xzcompositeArtifacts.xml/.jarcompositeContent.xml/.jarp2.index
因此,只要您将名为(例如)artifacts.jar的文件上传到Bintray中的通用或maven存储库,就会将其作为元数据文件处理。

需要注意的另一点是,继续上面的解释 - 当您上传版本化工件时,您必须指定它应与之关联的包和版本。而当你上传元数据文件时(再次--Bintray通过其名称识别它),Bintray不期望包和版本。

Bintray有几个选项可以在上传REST API中指定包和版本:

  • 在网址路径中:
    PUT /content/:subject/:repo/:package/:version/:file_path
    (请注意网址中的:package/:version参数)
  • 在标题中:
    X-Bintray-Package: :package
    X-Bintray-Version: :version
    PUT /content/:subject/:repo/:file_path
    (请注意,网址中没有:package/:version个参数)
  • 作为URL中的矩阵参数:
    PUT /content/:subject/:repo/:file_path;bt_package=:package;bt_version=:version

对于元数据文件,在第二个&第三个选项Bintray忽略了包和版本。在第一个选项中,Bintray将包和版本作为路径的一部分处理,因此bintray中的结果路径包含它们(不是你想要的......)

<强>结论:
简而言之 - 在Bintray中将工件上传到P2存储库的最佳方法是使用第二个或第三个上传选项。这样 - 如果它是一个版本化文件,它具有与之关联的包和版本。如果它是元数据文件,则忽略包和版本,并将文件上载到正确的目标路径 例如,使用cURL

curl -u$BT_USER:$BT_PASS -XPUT -T <file-to-upload> "https://api.bintray.com/content/$BT_OWNER/$BT_REPO/$FILEPATH" -H "X-Bintray-Package: $BT_PKG" -H "X-Bintray-Version: $BT_VER"

这是一篇非常好的博文:Publish an Eclipse P2 Composite Repository on Bintray

HTH,
Yinon