我的设置是一个jenkins轮询我的git repo,并在每次推送时发布到nexus repo . 然后我有一个下游项目,它接受这个工件并将其部署到测试服务器 . 这个项目使用jenkins的工件解析器插件,只使用“LATEST”作为版本 .
我注意到的是以下内容 . 发布新快照后,元数据仅在特定版本文件夹中更新 . 特定版本元数据是正确的:
<metadata modelVersion="1.1.0">
<groupId>se.uniply</groupId>
<artifactId>dfkka_2.10</artifactId>
<version>1.2.7-SNAPSHOT</version>
<versioning>
<lastUpdated>20130524112854</lastUpdated>
</versioning>
</metadata>
https://repo.woodenstake.se/content/repositories/snapshots/se/uniply/dfkka_2.10/maven-metadata.xml
显示旧时间戳:
<metadata modelVersion="1.1.0">
<groupId>se.uniply</groupId>
<artifactId>dfkka_2.10</artifactId>
<versioning>
<latest>1.2.7-SNAPSHOT</latest>
<release/>
<versions>
<version>1.2.7-SNAPSHOT</version>
</versions>
<lastUpdated>20130523200733</lastUpdated>
</versioning>
</metadata>
因此,工件解析器不会下载最新版本,而只是使用本地目录中的缓存版本 . 为什么Nexus不更新版本?我错过了什么设置吗?
更多信息:
我正在使用带有发布插件的sbt 12.2(引擎盖下的常 Spring 藤) .
3 回答
其他答案与ivy和Maven快照发布有关:
Publishing Ivy SNAPSHOTS with Maven metadata
What's wrong with this Ivy changingPattern / SNAPSHOT configuration?
总之,快照版本是常 Spring 藤不完全支持的Maven功能 .
我也在SBT google小组中询问过这个问题:https://groups.google.com/forum/?fromgroups#!topic/simple-build-tool/ErA1ybeRXec
在做了一些研究这个帖子之后
https://groups.google.com/forum/?fromgroups#!topic/simple-build-tool/okaoV3SDH24
似乎说它的常 Spring 藤不会以使用Maven时预期的方式输出这些文件 . 解决方案是使用Aether-plugin进行SBT,“部署”Maven方式而不是“发布” .
https://github.com/arktekk/sbt-aether-deploy
使用这个,xml:s也使用来自SBT构建的PUT:s进行了更新 .
Nexus实际上根本不维护这些文件 . 构建系统就是这样做的 . 如果您使用Maven,部署插件将负责处理它 .
似乎与常 Spring 藤没有做到这一点 . 我建议按照@hedefalk的建议集成sbt-aether-deploy工具 .
作为停止间隔度量,您可以定期在存储库上运行重建元数据任务 .