我使用sbt
将新的工件发布到nexus-maven2存储库(my-maven-repo)。新的伪像出现在链接界面中。另一个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 question 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并不能解决问题。
答案 0 :(得分:0)
我使用nexus存储库管理器-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
获取此任务的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是最新的答案 1 :(得分:0)
我通过监视网络流量而作弊,最终得到以下结果:
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”应该是一些自动递增的数字,但似乎并不重要。