2012-01-25 4 views
7

Sto usando sbt-assembly per creare un jar eseguibile, ma la mia applicazione si arresta in modo anomalo perché jai imageio carica il nome del fornitore dal file MANIFEST.MF. Se io modificare manualmente il file/MANIFEST.MF META-INF da:Aggiunta di informazioni del fornitore a MANIFEST.MF tramite l'assemblaggio sbt

Manifest-Version: 1.0 
Main-Class: myMainClass 

a

Implementation-Vendor: foo 
Implementation-Title: bar 
Implementation-Version: 1.0 
Manifest-Version: 1.0 
Main-Class: myMainClass 

tutto funziona bene.

Come configurare sbt o sbt-assembly per includere le informazioni di implementazione aggiuntive nel jar? O c'è un altro modo per aggirare questo?

(ps: Il riferimento a cui si guarda in alto le informazioni del pacchetto: http://www.java.net/external?url=http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules/Java-Advanced-Imaging/com/sun/media/imageioimpl/common/PackageUtil.java.htm)

risposta

8

Sto usando SBT 0.11.2 e, SBT aggiunge le informazioni di manifesto per il barattolo senza alcuna configurazione aggiuntiva :), io sono Non sono sicuro del motivo per cui hai questo problema.

Questo è un esempio di MANIFEST.MF vaso squryl che ho costruito localmente

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 

ma questo può essere configurato nel build.sbt o Build.scala

ad esempio

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")))) 
0

Il problema è che l'assembly sbt non aggiunge le chiavi predefinite a MANIFEST.MF. il pacchetto sbt, d'altra parte, lo fa, il che probabilmente è quello che ha usato Jestan Nirojan.

Ho creato un problema per il progetto del plugin assembly sbt su github. Potresti voler aggiungere un commento per aumentare le possibilità che venga corretto.

See this