我对 SBT 非常陌生,需要为我的一个项目创建一个 RPM 包。RPM 仅包含 1 个文件,这是一个由 sbt-onejar 插件创建的 one-jar)。我想使用 sbt-native-packager 插件并在 /project 目录下创建了一个 Packagin.scala 文件,如下所示:
object Packaging {
val settings: Seq[Setting[_]] = packagerSettings ++ deploymentSettings ++ mapGenericFilesToLinux ++ Seq(
maintainer := "Team",
packageSummary := "Summary",
packageDescription := """Description""",
mappings in Universal += {
file("target/scala-2.10/projectname_2.10-0.1-one-jar.jar") -> "/opt/projectname/projectname-0.1.jar"
},
linuxPackageMappings in Rpm <+= (baseDirectory) map { _:File =>
(packageMapping(file("target/scala-2.10/projectname_2.10-0.1-one-jar.jar") -> "/opt/projectname/projectname-0.1.jar")
withUser "someusr" withGroup "somegroup" withPerms "0755")
},
name in Rpm := "projectname",
version in Rpm <<= version apply { sv => sv split "[^\\d]" filterNot (_.isEmpty) mkString "." },
rpmRelease := "1",
rpmVendor := "Vendor",
rpmUrl := Some("url"),
rpmGroup := Some("group"),
rpmLicense := Some("BSD")
)
}
1)我不想硬编码文件名。而不是让"target/scala-2.10/projectname_2.10-0.1-one-jar.jar"
我需要一种使用现有 SettingKey 的方法,即target + "scala-" + scalaVersion + "/" + name + "_" + scalaVersion + "-" + version + "-one-jar.jar"
- 你如何做到这一点=
2) 对于rpmRelease := "1"
我想使用系统属性的值,即在 Maven 中我会这样做${rpm.buildNumber}
,它在 SBT 中如何工作?
3) 关于 sbt-native-packager 插件,有什么我应该做的更好的吗?