Я очень новичок в SBT, и мне нужно создать пакет RPM для одного из моих проектов. RPM содержит только 1 файл, который представляет собой one-jar, созданный плагином sbt-onejar). Я хочу использовать плагин sbt-native-packager и создал файл Packagin.scala в каталоге /project следующим образом:
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?