You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sbt native packager为Scala Play应用构建RPM包遇疑问

问题解答:sbt Native Packager生成JAR而非RPM的原因及解决方法

首先明确回答你:那个生成的.jar文件绝对不是RPM构建的目标产物,你说得没错,正常使用sbt rpm:packageBin命令应该得到后缀为.rpm的包。

你遇到的关键问题是构建过程中抛出的错误:

[error] rpmVendor in Rpm is empty. Please provide a valid vendor for the rpm SPEC.

这个错误直接导致RPM打包流程中断了,而你看到的[info] Done packaging.其实是sbt默认的package任务(生成普通应用JAR)完成的提示,和RPM打包任务无关——也就是说RPM任务失败了,但基础的JAR打包还是正常执行了,所以你只拿到了JAR文件。

解决步骤:

  1. 补充RPM必填配置
    在你的项目build.sbt文件中添加rpmVendor配置,这是RPM SPEC文件要求的必填项,示例:

    rpmVendor := "Your Organization Name" // 替换成你的公司/组织名称
    

    为了避免后续可能出现的其他配置缺失问题,还可以补充一些常用的RPM配置项:

    rpmSummary := "Scala Play Application"
    rpmDescription := "Production-ready Scala Play application packaged as RPM"
    rpmRelease := "1"
    
  2. 重新执行RPM打包命令
    保存配置后,再次运行:

    sbt rpm:packageBin
    

    这次如果没有其他错误,你会在项目的target/rpm/RPMS/[your-arch]/目录下找到生成的.rpm文件(比如target/rpm/RPMS/noarch/your-app-name-1.0-1.noarch.rpm)。

额外说明:

sbt Native Packager的RPM任务依赖于完整的SPEC文件配置,必填项缺失时会直接终止RPM构建流程,但不会影响sbt的基础打包任务。所以下次遇到类似情况,优先看错误日志里的提示,而不是只看最后的成功提示哦。

内容的提问来源于stack exchange,提问作者Jenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:50:23