Artifactory:通过脚本将Ivy Descriptors发布到Repository

时间:2012-02-24 16:18:31

标签: java deployment ivy artifactory

有人向我解释过,如果你想让Artifactory管理你的存储库(我这样做),如果你不想自己手工编写自己的Ivy描述符(我没有),那么你的选项是:

  • 使用Ivy RoundUp,除了工件本身外还包含Ivy描述符;或
  • 编写脚本为您生成描述符;或
  • 编写XML转换以在Maven和Ivy描述符模式之间进行转换

在仔细权衡我的选项后,我决定编写一个Python脚本来生成这些描述符。我将我希望部署/安装的所有工件放到我的存储库中的deploy/文件夹中,脚本将迭代它在此文件夹中找到的任何工件,查询用户以获取有关它的信息,然后为我执行部署,就在脚本内部。

虽然最后一个要求不是强制性的,但只需让脚本命中Artifactory的RESTful API并在适当的位置为我部署描述符和工件就 nice

This page解释了API,并且是我的问题的主题。

API公开的唯一基于PUT的操作是:

PUT http://localhost:8080/artifactory/<repo>/<organization>/<module>/<version>/<artifact>:sample-metadata

<xml-metadata-content/>

此操作的描述为:

  

将XML元数据附加到项目(文件或文件夹)。

这是我正在寻找的吗?例如,如果我有一个名为my-utils-2.3.jar的jar,那么我希望能够将其放在deploy/中目录,让我的脚本不仅生成my-utils-2.3-ivy.xml,而且还要将这两个项目部署到我位于正确位置的存储库(在本例中为http://localhost:8080/artifactory/my-repo/my/utils/2.3/)。

如果这不是我想要的,那么Artifactory的API是否支持我想要的(以及关于此的文档在哪里!)?

而且,如果这是我正在寻找的,那么我有第二个与安全相关的问题。我想保证我的所有存储库都是安全的。理想情况下,执行此Python脚本的用户必须提供Artifactory admin用户名&amp;密码,以便部署成功执行。

但是在这个操作的定义中我没有看到任何对身份验证的支持!!我是否假设Artifactory不验证REST调用?!?

提前致谢!

修改
我在Artifactory / Users old nabble论坛上找到了以下示例:

curl -X PUT -u user:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/"

这是我正在寻找的吗?这样,我可以将PyCurl用于curl / libcurl接口,并且仍然可以实现安全性。如果是这样,那么为什么我要求curl进行身份验证,而不是Artifactory?

2 个答案:

答案 0 :(得分:1)

Artifactory对所有REST调用使用HTTP BASIC身份验证。您提到的curl示例将不起作用,因为您需要指定文件的完整目标路径(当前命令将只在(重新)创建Artifactory中的目录并忽略文件流)。你应该使用:

curl -XPUT -f -uadmin:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/my-utils-2.3.jar"

但是,您可以使用常春藤通过IBiblio resolver直接从第三方Maven回购中解析(请参阅“usepoms”),或使用convertpom任务自动将poms转换为常春藤描述符。

Artifactory还允许您在内部应用此类型的pom-&gt; ivy转换,并通过基于groovy的user plugin将常春藤文件存储到其缓存中,该{_ 3}拦截'afterRemoteDownload'事件。

答案 1 :(得分:0)

虽然Artifactory足够灵活以支持常春藤存储库,但我建议将其作为Maven存储库运行。

为什么呢?

  1. Maven已将自己确立为事实上的Java 存储库标准。
  2. 其他构建工具,Ivy,Gradle,sbt等都了解Maven存储库。
  3. 以下答案描述了ivy如何部署到Maven存储库:

    Convert ivy.xml to pom.xml

相关问题