我正在使用sbt-assembly来创建一个可运行的jar,但是我的应用程序崩溃是因为jai imageio从MANIFEST.MF文件中加载了供应商名称。如果我从:
手动编辑META-INF / MANIFEST.MF文件Manifest-Version: 1.0
Main-Class: myMainClass
到
Implementation-Vendor: foo
Implementation-Title: bar
Implementation-Version: 1.0
Manifest-Version: 1.0
Main-Class: myMainClass
一切正常。
如何配置sbt或sbt-assembly以在jar中包含其他实现信息?或者还有另一种解决方法吗?
答案 0 :(得分:8)
我正在使用sbt 0.11.2,并且sbt将清单信息添加到jar而没有任何其他配置:),我不知道你为什么会遇到这个问题。
这是我在本地建造的squryl jar的MANIFEST.MF样本
Manifest-Version: 1.0
Implementation-Vendor: org.squeryl
Implementation-Title: squeryl
Implementation-Version: 0.9.5-rc1
Implementation-Vendor-Id: org.squeryl
Specification-Vendor: org.squeryl
Specification-Title: squeryl
Specification-Version: 0.9.5-rc1
Main-Class: org.squeryl.logging.UsageProfileConsolidator
但可以在build.sbt或Build.scala
中配置例如
import sbt._
import Keys._
import sbt.Package.ManifestAttributes
//......
//......
lazy val baseSettings = Defaults.defaultSettings ++ Seq(
version := ProjectVersion,
organization := Organization,
scalaVersion := ScalaVersion,
packageOptions := Seq(ManifestAttributes(
("Implementation-Vendor", "myCompany"),
("Implementation-Title", "myLib"))))
答案 1 :(得分:0)
问题是sbt程序集不会将默认密钥添加到MANIFEST.MF。另一方面sbt包也这样做,这可能是Jestan Nirojan所使用的。
我在github上为sbt程序集插件项目创建了一个问题。您可能希望添加注释以增加修复的可能性。