sbt sonaUpload部署名称缺失ArtifactID,如何配置解决?
问题背景
使用sbt sonaUpload向Sonatype上传版本时,生成的部署仅显示GroupID(如nl.codestar)和版本号(如0.4.6),缺失ArtifactID(本例为sbt-azure-functions_2.12_1.0),导致Sonatype后台的部署列表难以区分不同组件(尤其是版本号相近时)。操作日志中部署标识显示为nl.codestar:0.4.6:516c7e99,未包含关键的ArtifactID信息。当前环境使用sbt 1.11.0、sbt-assembly 2.3.1、sbt-ci-release 1.11.1。
可行解决方法
1. 自定义部署会话名称(推荐)
sbt-ci-release的sonaUpload支持通过sonatypeSessionName配置自定义部署会话的显示名称,将ArtifactID纳入其中。在build.sbt中添加以下配置:
ThisBuild / sonatypeSessionName := { val artifactId = (name).value val version = (version).value val groupId = (organization).value s"$groupId:$artifactId:$version" }
配置后,Sonatype后台的部署列表会显示包含GroupID、ArtifactID和版本号的完整标识,比如nl.codestar:sbt-azure-functions_2.12_1.0:0.4.6,可轻松区分不同组件。
2. 检查并升级sbt-ci-release插件
当前使用的sbt-ci-release 1.11.1可能存在部署信息未提取ArtifactID的疏漏。可以查看插件的版本更新记录,若后续版本有修复该问题,升级到最新版本即可直接解决。
3. 验证POM文件完整性
从操作日志看,POM文件已正确生成(路径为/Users/jml/work/sopra/repos/codestar/sbt-plugins/sbt-azure-functions-plugin/plugin/target/scala-2.12/sbt-1.0/sbt-azure-functions_2.12_1.0-0.4.6.pom),可打开该文件确认<artifactId>字段是否正确填写。如果POM文件没问题,说明问题出在sonaUpload任务的信息提取逻辑上,此时优先通过自定义会话名称或升级插件解决。
内容的提问来源于stack exchange,提问作者JeanMarc

