如何强制sonatype nexus 3为maven存储库重新创建maven-metadata.xml?

如何强制sonatype nexus 3为maven存储库重新创建maven-metadata.xml?,maven,sbt,nexus,Maven,Sbt,Nexus,我使用sbt将新工件发布到nexus-maven2存储库(my maven repo)。新的人工制品出现在nexus界面中。另一个sbt项目使用这些人工制品。使用确切要求时;他找到了那些,但当使用范围时;他获取可用工件的列表,而该列表从来都不是最新的 我尝试过的方法/变通方法及其结果: 不工作:使用nexus接口-->存储库-->my maven repo-->重建索引 不工作:curl-v-u用户:通过-X删除http://my-server/nexus/service/local/meta

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

我尝试过的方法/变通方法及其结果:

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

  • 使用不同的
    sbt
    版本进行测试,这似乎不是
    sbt
    问题;看
  • nexus版本3.4.0-02
  • 使用BETA API,我可以找到新版本(
    curl-xget--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 repository manager-3.13中的新API找到了一个解决办法:

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

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

我通过监控网络流量进行欺骗,结果我犯了以下错误:

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”应该是一个自动递增的数字,但它似乎并不重要。

首先,我建议升级到Nexus 3的最新版本…(3.13.?)@khmarbaise:升级完成,同样的问题仍然存在:您是否已配置在管理区运行任务?@khmarbaise您看到我下面的答案了吗?在maven存储库中,执行部署的工具负责更新maven-metadata.xml文件。这就是Maven的工作方式。听起来您部署这些JAR的方式有问题,不必让Nexus重建这些文件。