我使用sbt
将新工件发布到nexus-maven2存储库(my-maven-repo)。新的人工制品出现在nexus界面中。另一个sbt项目使用这些文物。使用确切要求时;他发现了那些,但在使用范围时;他获取可用工件列表,该列表永远不会是最新的。
我尝试过的方法/解决方法及其结果:
curl -v -u user:pass -X DELETE http://my-server/nexus/service/local/metadata/repositories/my-maven-repo/content
(错误:此URL不支持Http方法DELETE)笔记:
sbt
版本,这似乎不是一个sbt
问题;见related questioncurl -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 repository manager-3.13中的新API的解决方法:
Repair - Rebuild Maven repository metadata (maven-metadata.xml)
)curl -v -u user:pass -X GET http://my-server/nexus/service/rest/v1/tasks
获得此任务的IDcurl -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是最新的我通过监控网络流量来欺骗,最后得到以下结果:
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”应该是一些自动递增的数字,但它似乎并不重要。