【问题标题】:Publish artifact to Nexus via REST API, POST通过 REST API、POST 将工件发布到 Nexus
【发布时间】:2012-06-17 05:59:06
【问题描述】:

不精通 Nexus 管理....

“手动”上传工件时,打开控制台查看网络调用。想跳过使用 Maven 或 Ivy 上传到 Nexus。一切明智的查询都通过 ExtJS XHR 调用,除了在 Chrome 开发人员工具中显示为 Documents 调用的工件信息的发布(假设这是通过 ExtJS 发出的表单提交)。

尚未尝试使用 curl 进行模拟(如果可能,不知道如何在 curl 中处理多部分表单)但这是除了从 Ivy 或 Maven 进行传统发布之外“发布”工件的唯一方法吗?看起来 Nexus 有一个 Java API,但希望留在 REST HTTP 世界中(希望 Nexus REST 服务基本上使用 apache 的 HTTPCLIENT 之类的东西来完成多部分表单发布)。

【问题讨论】:

  • 请注意。发布快照修订需要客户端更新修订后的 Maven 模块的元数据文件...似乎是一个未记录的“功能”:-)

标签: rest publish nexus


【解决方案1】:

从 Sonatype 找到此回复:

简而言之,可以直接 POST 工件,但是 Maven 模块所需的其他文件呢?最重要的是 POM...

上传文件最简单的方法是使用 deploy-file 插件:

Upload artifacts to Nexus, without Maven

不使用 Maven 客户端是否有令人信服的理由?

【讨论】:

  • 可以在多部分表单上传中附加Maven POM。将在 Curl 中写一个示例。出于各种原因没有使用 Maven,但大多数存储库都是基于 Maven 的,因此我们尝试使用 Nexus。例如,Ivy 与 Maven 存储库集成。只是想要一个没有 Maven/Ivy 并希望通过 REST 的解决方案。
【解决方案2】:

使用卷曲:

curl -v \
    -F "r=releases" \
    -F "g=com.acme.widgets" \
    -F "a=widget" \
    -F "v=0.1-1" \
    -F "p=tar.gz" \
    -F "file=@./widget-0.1-1.tar.gz" \
    -u myuser:mypassword \
    http://localhost:8081/nexus/service/local/artifact/maven/content

这将适用于不使用 maven 的人的非 java 依赖项。在这个答案上查看我的 cmets:https://stackoverflow.com/a/19699327/231573

【讨论】:

  • 这将不会在服务器端展开存档,这意味着您将无法仅下载部署到 nexus 服务器的部分文件。在许多情况下,这正是非 Java 人士所希望的。
  • 我得到“405 Method Not Allowed”作为响应状态。它说“此 URL 不支持 HTTP 方法 POST”。我是否必须安装或启用某些东西才能从 Rest API 中受益。
  • 好吧,我认为这是因为 Nexus 3 不支持您在此处提到的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2011-12-15
  • 2017-07-10
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
相关资源
最近更新 更多