2014-04-09 22 views
0

有沒有辦法告訴sbt-onejar SBT插件生成JAR的方式是我的項目的.class文件是「展開」形式而不是lib/myproject.jarOneJar Expand(or without)sbt-onejar

另外,是否有可能告訴sbt-onejar生成一個JAR,當它被加載時,它實際上將嵌套JAR解包/擴展到一個臨時文件夾並從那裏加載它們,以便像getResource(...)這樣的東西返回路徑到物理文件,而不是jar:file:...網址?

Alternativel,我也很高興與任何香草OneJar解決方案,幫助我產生脂肪JAR,其中我自己.class文件將直接成爲脂肪JAR下lib/myproject.jar下,而不是。

我在問,因爲Jetty似乎無法從嵌套的JAR文件中加載JSP文件。似乎通過使用自定義資源加載器可以解決問題(請參閱http://dev.eclipse.org/mhonarc/lists/jetty-users/msg01174.html以獲得相同問題和解決方法的報告),但我似乎無法讓我的servlet實際使用重寫的getResource方法解決方法。

回答

0

看了SBT-onejar的源代碼後:

packageOptions in oneJar ++= 
    Seq(sbt.Package.ManifestAttributes(
    new java.util.jar.Attributes.Name("One-Jar-Expand") -> "some-file.txt")) 

不過,我已經使用OneJar與碼頭實現是相當有問題的野獸由於JSP負載如何碼頭文件 - doesn't seem to work with nested JARs - 所以我在尋找現在變成替代品。

編輯:我發現https://github.com/xerial/sbt-pack,似乎實現與被標準,因此沒有問題的差額作爲OneJar同樣的效果,更快,更加個性化,並允許方便的自定義程序的定義入口點。