我的设置是一个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(引擎盖下的常春藤)。
答案 0 :(得分:2)
我也在SBT google小组中询问过这个问题: https://groups.google.com/forum/?fromgroups#!topic/simple-build-tool/ErA1ybeRXec
在做了一些研究之后
https://groups.google.com/forum/?fromgroups#!topic/simple-build-tool/okaoV3SDH24
似乎表明它的Ivy没有以使用Maven时预期的方式输出这些文件。一个解决方案是使用Aether-plugin for SBT“部署”Maven方式而不是“发布”。
https://github.com/arktekk/sbt-aether-deploy
使用这个,xml:s也通过SBT构建中的PUT来更新。
答案 1 :(得分:1)
Nexus实际上根本不维护这些文件。构建系统就是这样做的。如果您使用Maven,部署插件将负责处理它。
似乎与常春藤没有做到这一点。我建议按照@hedefalk的建议集成sbt-aether-deploy工具。
作为止损措施,您可以定期在存储库上运行重建元数据任务。
答案 2 :(得分:0)
其他答案与ivy和Maven快照发布有关:
总之,快照版本是常春藤不完全支持的Maven功能。