Я очень новичок в SBT и мне нужно создать пакет RPM для одного из моих проектов. RPM содержит только 1 файл, который является одним банком, созданным плагином sbt-onejar). Я хочу использовать SBT-родной-упаковщик плагин и создал файл Packagin.scala в директории/проекте, как это:Пути построения в SBT для пакета Отображения sbt-native-packager
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?
Хм, как для 'rpmRelease' I реализованный наш сервер сборки Bamboo использует переменные среды. Поэтому я попытался изменить его на «rpmRelease: = Option (sys.env (« rpm.buildNumber »)) getOrElse« 1 »' в _project/Packaging.scala_, но по какой-то причине я всегда получаю «1». Когда я получаю доступ к 'sys.env (" rpm.buildNumber ")' in build.sbt, он работает. По какой-то причине переменные окружения не распространяются на Packaging.scala. – reikje
Хмм, это должно быть так. Настройка порядка. У вас есть rpmRelease: = ... 'где-то еще, или вы устанавливаете собственные настройки упаковщика * после * своего собственного параметра rpmRelease? Также настройки 'project/*. Scala' вытягиваются перед настройками' build.sbt'. – jsuereth