如何强制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-->重建索引
- 不工作:
(错误:此URL不支持Http方法删除)curl-v-u用户:通过-X删除http://my-server/nexus/service/local/metadata/repositories/my-maven-repo/content
- 工作:删除同一存储库中的另一个人工制品。但是这不是一个很好的解决方案;我不想开始删除人工制品,这需要管理员权限
- 使用不同的
版本进行测试,这似乎不是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)
获取此任务的idcurl-v-u用户:pass-xgethttp://my-server/nexus/service/rest/v1/tasks
触发重新创建所有maven-metadata.xmlcurl-v-u用户:pass-X POSThttp://my-server/nexus/service/rest/v1/tasks/c42ab5f5-4bd6-4ed3-b2f1-d061c24a9b90/run
- 需要管理员权限
之后需要额外的步骤来确保maven-metadata.xml是最新的sbt publish
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重建这些文件。