【问题标题】:how to force sonatype nexus 3 to recreate maven-metadata.xml for maven repository?如何强制 sonatype nexus 3 为 maven 存储库重新创建 maven-metadata.xml?
【发布时间】:2019-01-21 01:56:25
【问题描述】:

我使用 sbt 将新工件发布到 nexus-maven2 存储库 (my-maven-repo)。新的人工制品出现在关系界面中。另一个 sbt 项目使用这些人工制品。使用确切要求时;他找到了那些,但是在使用范围时;他获取了可用工件的列表,但该列表永远不会是最新的。

我尝试过的方法/解决方法及其结果:

  • 不工作: 使用 nexus 接口 --> 存储库 --> my-maven-repo --> 重建索引
  • 不工作curl -v -u user:pass -X DELETE http://my-server/nexus/service/local/metadata/repositories/my-maven-repo/content(错误:此 URL 不支持 Http 方法 DELETE)
  • WORKING删除同一存储库中的另一个工件。但这不是真的是一个很好的解决方案;我不想开始删除人工制品,这需要管理员权限。

注意事项:

  • 用不同的sbt 版本测试,这似乎不是sbt 的问题;见related question
  • nexus 版本 3.4.0-02
  • 使用 BETA API 我可以找到新版本 (curl -X GET --header 'Accept: application/json' 'http://my-server/nexus/service/siesta/rest/beta/search?repository=my-maven-repo&name=mylib_2.12&version=2.4.0');但sbt 在未指定确切版本号时仍然找不到它们。

编辑不完整列表可以通过wget http://my-server/nexus/repository/my-maven-repo/org/company/mylib_2.12/maven-metadata.xml

获取

EDIT2 升级到 nexus-3.13 并没有解决问题。

【问题讨论】:

  • 首先我建议升级到最新版本的 Nexus 3...(3.13.?)
  • @khmarbaise:升级完成,同样的问题仍然存在
  • 您是否配置为在管理区域运行任务?
  • @khmarbaise 你在下面看到我的回答了吗?

标签: maven sbt nexus


【解决方案1】:

我使用 nexus 存储库管理器 3.13 中的新 API 找到了一个解决方法

  • (使用 Web 界面):创建一个新任务来重新创建所有托管的 maven 存储库 (Repair - Rebuild Maven repository metadata (maven-metadata.xml))
  • curl -v -u user:pass -X GET http://my-server/nexus/service/rest/v1/tasks获取此任务的id
  • curl -v -u user:pass -X POST http://my-server/nexus/service/rest/v1/tasks/c42ab5f5-4bd6-4ed3-b2f1-d061c24a9b90/run 触发所有 maven-metadata.xml 的重新创建

缺点:

  • 需要管理员权限
  • sbt publish 之后需要额外的步骤以确保 maven-metadata.xml 是最新的

【讨论】:

  • 在 maven 存储库中,执行部署以更新 maven-metadata.xml 文件是工具的责任。这就是 Maven 的工作方式。听起来您部署这些 jar 的方式有问题,应该没有必要让 Nexus 重建这些文件。
【解决方案2】:

我通过监控网络流量作弊,结果如下:

curl \
    --silent \
    --user $NEXUS_USERNAME:$NEXUS_PASSWORD \
    --header "Content-Type: application/json" \
    --data '{"action":"coreui_Repository","method":"rebuildIndex","data":[$NEXUS_REPOSITORY],"type":"rpc","tid":0}' \
    http://$NEXUS_SERVER/service/extdirect

这对我有用。尽管“tid”应该是一些自动递增的数字,但这似乎并不重要。

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 1970-01-01
    • 2021-12-21
    • 2014-07-12
    • 2016-08-18
    • 2013-05-07
    • 2019-09-24
    • 2014-06-04
    • 2011-06-20
    相关资源
    最近更新 更多