使用lein deploy推jar到JFrog Artifactory时SNAPSHOT命名不符合预期如何解决
解决Leiningen部署SNAPSHOT包到JFrog Artifactory无时间戳后缀问题
Leiningen 2.x版本默认部署SNAPSHOT版本时使用固定的-SNAPSHOT后缀命名,不会自动生成Maven风格的时间戳后缀,且包名前缀由项目配置决定,按以下步骤调整即可匹配预期命名规则:
1. 修改项目project.clj配置
- 修正包名前缀:你当前上传包名为
stamper-0.1.0-SNAPSHOT.jar,是因为配置中项目名设置为stamper,将defproject后的第一个参数修改为context即可匹配前缀要求 - 开启时间戳后缀生成:添加
:unique-version true全局配置,启用SNAPSHOT版本自动生成唯一时间戳功能 - 配置正确的JFrog快照仓库地址
示例配置片段:
(defproject context "0.1.0-SNAPSHOT" :description "项目业务描述" :unique-version true :repositories [["snapshots" {:url "https://你的JFrog域名/artifactory/libs-snapshots-local" :username :env/ARTIFACTORY_USER :password :env/ARTIFACTORY_PWD}]] ;; 其余原有项目配置保持不变 )
2. 调整JFrog Artifactory仓库配置
确认推送目标的快照仓库开启了唯一快照策略:
- 进入Artifactory后台,找到对应快照仓库点击编辑
- 在基础配置页中,将「Maven Snapshot Version Behavior」选项设置为Unique,不能选择Non-unique或Deployer选项
3. 执行部署命令
配置完成后先执行lein clean清除本地历史构建产物,再执行lein deploy snapshots即可,上传的jar包会自动按照[项目名]-[版本前缀].[时间戳]-[构建序号].jar规则命名,和你预期的context-0.1.0-20210728.151214-1.jar规则完全匹配。
排查注意事项
你当前使用的Leiningen 2.9.3、Maven 3.0.5版本均支持上述配置,不需要做版本降级或升级,配置不生效时优先检查本地是否有残留的旧构建产物,或Artifactory仓库的快照策略配置是否正确。
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

