sbt-native-packager 插件在 Play 项目的 rpm 构建中出错

Posted

技术标签:

【中文标题】sbt-native-packager 插件在 Play 项目的 rpm 构建中出错【英文标题】:sbt-native-packager plugin errors out rpm build of Play project 【发布时间】:2013-11-25 01:32:13 【问题描述】:

我正在尝试使用 RPM 文件打包 Play Framework 应用程序,但我不知道将 Play Framework 项目中所需的配置放在哪里。

我已将插件添加到我的项目/plugins.sbt 文件中

// Comment to get more information during initialization
logLevel := Level.Warn

// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

resolvers += "tomax repository" at "http://maven.tmx.com/nexus"

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1")

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.6.3")

当我运行以下命令时,我在 Play 中遇到错误:

rpm:package-bin

然后我按照建议运行错误的最后一个命令,我得到了

Creating SPEC file: /projects/myproj/target/rpm/SPECS/MyProj.spec
[debug] Executing rpmbuild with: rpmbuild -bb --buildroot /projects/myproj/target/rpm/buildroot --define _topdir /projects/myproj/target/rpm --target noarch--Linux MyProj.spec
[error] error: line 4: Empty tag: Summary:
[info] Building target platforms: noarch--Linux
[info] Building for target noarch--Linux
java.lang.RuntimeException: Unable to run rpmbuild, check output for details

【问题讨论】:

这看起来像一个错误。我建议你在 github 上提出一个关于 sbt-native-packager 项目的问题,先检查它是否还没有被其他人提出。 rpm-build 打印它的错误:“Empty tag: Summary”意味着 packageSummary 丢失。 【参考方案1】:

使 sbt-native-packager 与 play 一起工作的一种方法是将以下内容添加到 Build.scala 中的设置中

val storeOpsServer = play.Project(
    "storeops-server", appVersion, appDependencies, path = file("storeops-server")
  ).settings(
    //Packaging for RPMs
    name in Rpm := "my-server",
    version in Rpm := appVersion,
    rpmRelease := "0",
    packageSummary := "Some summary of your software",
    rpmVendor := "My Corporation",
    rpmUrl := Some("http://www.mycorp.com"),
    rpmLicense := Some("MIT"),
    packageDescription := "Some description of what your server does",
    rpmGroup := Some("Group")
  ).dependsOn(adapterApi)

您不需要上面的所有值,但这些是我使用并成功使用的值。

这是文件中的导入

import com.typesafe.sbt.packager.linux.LinuxPackageMapping, LinuxSymlink
import com.typesafe.sbt.packager.rpm.RpmDependencies
import com.typesafe.sbteclipse.core._
import sbt._
import Keys._
import play.Project._

import com.typesafe.sbt.packager.Keys._
import com.typesafe.sbt.SbtNativePackager._

【讨论】:

很好的答案!注意:当您尝试构建 rpm 时,我将修复文档和错误消息以概述所需的值是什么。 请包括完成这项工作所需的导入 Collin 我将导入添加到答案中,感谢您指出这一点。当我看到更完整的答案时,我喜欢它。不幸的是,我们的 Build.scala 有点复杂,里面有几个项目。如果您需要进一步的帮助,请发表评论。

以上是关于sbt-native-packager 插件在 Play 项目的 rpm 构建中出错的主要内容,如果未能解决你的问题,请参考以下文章

sbt-native-package docker 插件是不是支持创建标签

使用 sbt-native-packager 时的配置目录

任何使用 sbt-native-packager 的好例子

发布 sbt-native-packager 创建的 zip

如何在具有多个电源的单个模块项目中设置 sbt-native-packager

Sbt-native-packager 在两台不同的机器上生成两个不同的包