已经向我解释过,如果您想让 Artifactory 管理您的存储库(我会这样做),并且如果您不想自己手写 Ivy 描述符(我不这样做),那么您的选择是任何一个:
- 使用 Ivy RoundUp,除了工件本身之外,它还包含 Ivy 描述符;或者
- 编写脚本为您生成描述符;或者
- 编写 XML 转换以在 Maven 和 Ivy 描述符模式之间进行转换
在仔细权衡了我的选择之后,我决定编写一个 Python 脚本来生成这些描述符。我会将我希望部署/安装到我的存储库的所有工件放入一个deploy/
文件夹中,脚本将遍历它在此文件夹中找到的所有工件,向用户查询有关它的信息,然后为我执行部署,对吧在脚本里面。
尽管这最后一个要求不是强制性的,但最好让脚本访问Artifactory的 RESTful API 并在正确的位置为我部署描述符和工件。
此页面解释了 API,并且是我的问题的主题。
PUT
API 公开的唯一基于操作是:
PUT http://localhost:8080/artifactory/<repo>/<organization>/<module>/<version>/<artifact>:sample-metadata
<xml-metadata-content/>
此操作的描述是:
将 XML 元数据附加到项目(文件或文件夹)。
这就是我要找的吗?例如,如果我有一个名为 的 jar my-utils-2.3.jar
,那么我希望能够将它放在deploy/
目录中,并且让我的脚本不仅生成my-utils-2.3-ivy.xml
,而且将这两个项目部署到我的存储库中的正确位置(在这个例如,将是http://localhost:8080/artifactory/my-repo/my/utils/2.3/
)。
如果这不是我想要的,那么 Artifactory 的 API 是否支持我想要的(以及关于此的文档在哪里!)?
而且,如果这是我正在寻找的,那么我有第二个与安全相关的问题。我想保护我所有的存储库。理想情况下,执行此 Python 脚本的用户必须提供 Artifactoryadmin
用户名和密码才能成功执行部署。
但是在这个操作的定义中,我没有看到任何对身份验证的支持!!我是否可以假设 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?