我必须为使用 proguard 的任务创建的包创建 osgi 清单。对于 osgi 部分,我正在使用 sbtosgi 插件(版本 0.6) 目前我尝试过这样的事情:
object BuilderKeys {
val pkg = TaskKey[File]("package")
val bld = TaskKey[File]("build")
val targetFile = TaskKey[File]("targetFile")
...
}
lazy val settings = ... + BuilderSettings.default(bundle) + BuilderSettings.osgi(bundle)
object BuilderSettings {
def default(configuration: Configuration) // initializes bld (task that creates one uber-jar using proguard)
def osgi(configuration: Configuration) = inConfig(configuration)(SbtOsgi.defaultOsgiSettings ++ Seq(
fullClasspath in Compile := Seq(Attributed.blank((targetFile in configuration).value)),
pkg <<= (OsgiKeys.bundle dependsOn bld) map { f: File =>
f
}
))
}
运行 bundle:package 创建带有清单的 jar,但不是基于 proguard 创建的 jar。是否有可能以某种方式强制它?