当前位置: 首页 > 知识库问答 >
问题:

如何通过Nexus REST API删除Nexus 3中的gav

潘志国
2023-03-14

有没有办法通过Nexus 3中的REST API删除GAV?从各种谷歌搜索来看,这种功能似乎存在于Nexus 2中,但在Nexus 3中还没有。这是真的吗?

我在当前的 Nexus 安装(即 OSS 3.2.1-01)中尝试了以下内容:

我试着删除GAV:

groupId = org.mycompany.myproject
artifactId = myartifact
version = 1.0.0

$ curl --request DELETE --user "USERNAME:PASSWORD" --write-out '%{http_code}\n' http://my-server:8081/service/local/repositories/my-repo/content/org.mycompany.myproject/myartifact/1.0.0

这给了我405分。

我还查看了3.3到3.5的发行说明,没有任何突出的内容表明添加了REST API支持。

我还研究了 https://help.sonatype.com/display/NXRM3/REST 和集成API。我下载了 nexus-book-examples 并下载了 3.2.1-01 版本的几个 Javadocs(nexus-core、nexus-repository、nexus-common、nexus-script、nexus-command、nexus-selector),并开始查看代码。目前尚不清楚从哪里开始删除GAV的简单程序。

我认为你不能通过Nexus 3中的REST API删除GAV,这是正确的吗?是否有计划在未来的Nexus 3版本中支持此功能?有没有一种方法可以通过使用上面REST和集成API链接引用的代码创建Groovy脚本来完成我想要做的事情?是否有一些示例代码可以帮助引导我使用上述代码(3.2.1-01或Nexus的更新版本)。

谢了。

共有2个答案

燕智
2023-03-14

根据文档,只有当您知道 assetId 或组件 ID 时,您才能删除 ASSET(单个文件)或组件(一组文件,如 jar md5 sha1 pom.xml表示工件)。

https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api

https://help.sonatype.com/repomanager3/rest-and-integration-api/assets-api

因此,您应该发出一个单独的搜索调用,传递GAV并找出componentId,然后在第二个调用中使用componentId进行删除。

然而我在这里看到https://issues.sonatype.org/browse/NEXUS-11266和这里

https://issues.sonatype.org/browse/NEXUS-11881 人们只需指定整个路径即可删除资产......我试过

curl -u admin:admin123 -X “DELETE” -w “%{http_code}” http://localhost:8081/repository/deployments/org/apache/commons/commons-compress/1.18/commons-compress-1.18.jar

它给了我一个HTTP 204(没有内容)。在我的情况下,“部署”是一个托管存储库。我在“中央”(代理存储库)上尝试了相同的命令,得到了405。

但如果我尝试下载整个组件(包括pom、sha1等)

curl-u admin:admin123-X“DELETE”-w“%{http_code}”http://localhost:8081/repository/deployments/org/apache/commons/commons-压缩/1.18/

我收到一个 HTTP 404。

我知道,这很痛苦,在Nexus2中要容易得多。

何睿范
2023-03-14

你可以看看我们在Nexus Repository 3中的Beta REST API。升级到高于 3.3 的版本,最好升级到 3.5(以便您使用最新和最高版本),然后导航到:

http://nexushostname:nexusport/swagger-ui/

由于REST API目前是测试版,我们还没有发布文档或者大张旗鼓地宣传它,同时让人们试验它并给我们反馈。

您应该看到用于删除组件和资源的endpoint。您可能希望使用组件删除,这样它将清理所有关联的资产。

让我知道你的里程数!

 类似资料:
  • 问题内容: 如果文件位于另一个目录中,如何使用PHP从服务器中删除文件? 这是我的页面布局: (此文件将删除我对数据库的所有条目,并且还应删除相关文件) (文件所在的位置。) 我正在使用的功能: 但这总是给我一个错误,该文件不存在。有任何想法吗? 问题答案: 以下应该有帮助 —返回规范化的绝对​​路径名 —告诉文件名是否可写 —删除文件 通过realpath运行文件路径,然后检查返回的路径是否可写

  • 本文向大家介绍如何通过R中data.table中的列名删除列?,包括了如何通过R中data.table中的列名删除列?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过将列设置为NULL来实现 示例 删除一列x 删除两列

  • 问题内容: 我正在尝试升级到ES 2.0。我下载了ES 2.0,并将其安装在Windows计算机上。 在我的pom.xml中,我具有以下内容: 在我的Java代码中,使用ES 1.7.3时,确实通过以下方式通过查询删除: 我希望替换为: 与ES 2.0方式。谷歌搜索,但没有找到一个例子。在线API文档对我来说似乎太抽象了。我该怎么做? 另一个问题:我必须在Elasticsearch服务器中安装按查

  • 问题内容: 我知道我可以使用KeyListener来检查是否按下DELETE ,但是如何在JTable中将keyListener添加到selectedRow? 编辑: 我已经尝试过了,但是没有用: 问题答案: KeyListeners的一个问题是,要侦听的组件 必须 具有焦点。解决此问题的一种方法是使用键绑定。 例如,

  • 我有两个具有一对一关系的实体,A和B。B实体是可选的,可以自行更新和删除,但必须始终链接到A的实例。 所以我有两个JPA实体,A和B具有双向关系。这是从A到B的那个。 我可以创建a和B,删除a,然后两者都被删除。好的 但由于从A到B的级联,如果i<code>em。remove(b)删除不会持久化。即使我做了。 在保留级联的同时删除可选实体的唯一方法似乎是使用新的JPA2特性orphanRemova

  • 如何删除带有双冒号的id? 我所尝试的: 什么都不起作用。移除其他元素是有效的,因此它与:: 我可以通过CSS删除它,但是我想从DOM中完全删除该元素。

  • 问题内容: 我刚刚在android应用程序中编写了一个函数,该函数使用Java中的标准“文件”类删除文件。即: 尽管上面的过程很简单,但我一直想知道通过“ ContentResolver”执行该操作是否有任何好处。任何意见,将不胜感激。 干杯, 杰瑞德 ------------------------------------------编辑------- 这是通过Content Resolver删

  • 问题内容: 我有ArrayList,我要从中删除具有特定值的元素… 例如 我知道我们可以遍历arraylist和.remove()方法来删除元素,但是我不知道如何在迭代时做到这一点。如何删除具有“ acbd”值的元素,即第二个元素? 问题答案: 在您的情况下,无需遍历列表,因为您知道要删除哪个对象。您有几种选择。首先,您可以按索引删除对象(因此,如果您知道,该对象是第二个列表元素): 然后,您可以