Nexus 存储库路径

Nexus repository path

我已经从 Jenkins 上传了一些发布工件到 Nexus。我可以看到它们是根据我提供的 -D 版本在 Nexus 下创建的。

示例:AppName-BuildNumber-Snapshot.zip

但是,不知何故,存储库路径是自动生成的,它附加了额外的 yyyymmdd.hhmmss。

示例:AppName-BuildNumber-Snapshot-yyyymmdd.hhmmss.zip

我想从 Jenkins 下载发布工件,但由于自动生成的 Nexus 存储库路径,我无法在单独的作业中下载它。

如何强制它停止将 yyyymmdd.hhmmss 添加到存储库路径?或者我是否可以使用 AppName 和 BuildNumber 检索存储库路径?

如果您要上传快照,Nexus 会使用时间戳动态存储它。那是因为您可以用较新的副本 w/same GAV 替换 -SNAPSHOTs。这与真正的 # jar 不同,后者 cannot/should 不会被重新部署,从而保持其完整性。

要下载-SNAPSHOT,您只需将其引用为-SNAPSHOT; maven、aether 等将检索最新的。

Maven(默认情况下)每天只检查 remote repository 是否有比您本地更新的版本,除非您使用 -U 选项或更改 updatePolicy。

如果你想要“实”数,那么你必须release罐子。

顺便说一句,您应该看到它是 -yyyymmdd.hhmmss-nn,其中 nn 是该版本的递增数字。


Nexus 支持 many different repository formats. If you only require maven, use Nexus 2 因为它更好地支持 Maven。 存储库类型:Maven 有 two distinct types:Release and Snapshot Repositories.

如果你想“上传包含发布工件的 zip 文件并根据构建版本号检索它?”,那么你应该这样做。

您必须 configure a repository of type release,而不是 snapshots(来自:-DrepositoryId=dsnexus-snapshots)(或者除了键入 snapshots 之外)。 要传递“构建版本号”,那么大概您有:

[ X ] Create a formatted version number
Environment Variable Name [ label ]

确保您的 Maven 步骤具有:

[ X ] Inject build variables

然后,mvn deploy:deploy-file -DgroupId=com.my.gid -DartifactId=AppName -Dversion=${label} -DrepositoryId=dsnexus-release

ps:如果您将每个构建都作为新工件进行抽取,您还需要在 Nexus 存储库中实施 cleanup strategy