【问题标题】:Sbt-Native-Packager Control file inconsistent name to .deb createdSbt-Native-Packager 控制文件与 .deb 创建的名称不一致
【发布时间】:2016-05-28 01:03:58
【问题描述】:

我对 Scala 或 sbt-native-packager 不是很熟悉,但我有一个 scala 项目,我们在其中创建了一个 debian。我注意到创建的 .deb 的名称是正确的,但控制文件不正确 - 有没有办法改变它?

版本:

Play: 2.2.3 (also tried with 2.2.6)

Sbt-Native-Packager: 0.7.6

在 plugins.sbt 中

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.6")

这是我得到的(减去敏感信息):

构建.scala:

val main = play.Project(appName, appVersion, appDependencies)
.settings(scalaVersion := "2.10.4")
.settings(DebPackageSettings.packageSettings(appName, appVersion, baseDirectory): _*)

在 DebPackageSettings 中:

def packageSettings(appName: String , appVersion: String, baseDirectory: SettingKey[java.io.File]): Seq[sbt.Setting[_]] = {

  val baseName = "prefix-project-name"
  val appPackageArchitecture = "all"

  Seq(
      name in Debian := "%s".format(baseName),
      version in Debian := "%s".format(appVersion),
      packageDescription in Linux := "something",
      packageSummary in Linux := "something",
      target in Debian <<= (Keys.target) apply ((t) => t / (baseName + "_" + appVersion + "_" + appPackageArchitecture))
  )
 ...

创建的控制文件(在 DEBIAN/control 中):

Source: project-name
Package: project-name
Priority: optional
Architecture: all
...

创建的 .deb:prefix-project-name_version_all.deb

我错过了什么吗?我查看了 sbt-native-packager 文档并搜索了一些答案,但没有运气:(

【问题讨论】:

    标签: scala playframework-2.0 sbt debian sbt-native-packager


    【解决方案1】:

    似乎name in Debian 只影响.deb 文件名,而不影响控制文件中的包名。为此,您应该使用packageName。该插件在名称空间和继承方面相当混乱。

    经过一番测试,我发现以下内容应该可以正常工作:

    name        in Linux := baseName,
    packageName in Linux := baseName,
    

    如果你使用in Debian,你会得到一个混合产品,其中一半的名称来自主范围名称,另一半来自 debian 范围。

    【讨论】:

    • 感谢您的快速回复!实际上想出了一种使用 normalizedName 并更改导入的不同方法。 (格式已关闭,因此将其添加为答案)
    • 是的,事物的来源范围并不总是直观的。我们在这方面努力工作,但 SBT 有时有点棘手。此外,您使用的插件版本非常旧。
    【解决方案2】:

    我发现这是可行的 - 但首选/正确的方法是什么?

    进口:

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

    添加的行:

      normalizedName in Debian := "%s".format(baseName),
    

    不知道什么是可取的!

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 2014-01-09
      • 2017-03-25
      • 2014-02-28
      • 2016-02-15
      • 2014-06-02
      • 2016-12-14
      • 2014-04-08
      • 2016-02-15
      相关资源
      最近更新 更多