使用(或不使用)sbt OneJar扩展OneJar

使用(或不使用)sbt OneJar扩展OneJar,jar,jetty,executable-jar,onejar,sbt-onejar,Jar,Jetty,Executable Jar,Onejar,Sbt Onejar,有没有一种方法可以告诉sbt onejar sbt插件以这样的方式生成JAR:我的项目的.class文件是“扩展”形式,而不是在lib/myproject.JAR下 或者,是否可以告诉sbt onejar生成一个JAR,当它被加载时,它实际上会将嵌套的JAR解压/扩展到一个临时文件夹中,并从那里加载它们,这样像getResource(…)这样的东西会返回物理文件的路径,而不是JAR:file:…url 另外,我也很乐意使用任何香草OneJar解决方案来帮助我制作一个胖JAR,其中我自己的.cla

有没有一种方法可以告诉sbt onejar sbt插件以这样的方式生成JAR:我的项目的
.class
文件是“扩展”形式,而不是在
lib/myproject.JAR

或者,是否可以告诉sbt onejar生成一个JAR,当它被加载时,它实际上会将嵌套的JAR解压/扩展到一个临时文件夹中,并从那里加载它们,这样像
getResource(…)
这样的东西会返回物理文件的路径,而不是
JAR:file:…
url

另外,我也很乐意使用任何香草OneJar解决方案来帮助我制作一个胖JAR,其中我自己的
.class
文件将直接位于胖JAR之下,而不是
lib/myproject.JAR
之下


我这样问是因为Jetty似乎无法从嵌套JAR文件中加载JSP文件。使用自定义资源加载器似乎确实有一个解决方法(请参阅,以获取相同问题的报告和解决方法),但我似乎无法让我的servlet实际使用解决方法中提供的重写的
getResource
方法。

阅读sbt onejar的源代码后:

packageOptions in oneJar ++=
  Seq(sbt.Package.ManifestAttributes(
    new java.util.jar.Attributes.Name("One-Jar-Expand") -> "some-file.txt"))
然而,我已经意识到,由于Jetty是如何加载JSP文件的,所以将OneJar与Jetty一起使用是一个相当麻烦的问题——所以我现在正在寻找替代方案

编辑:我发现它似乎达到了与OneJar相同的效果,不同之处在于它是标准的,因此没有问题,速度更快,更可定制,并允许定义方便的自定义程序入口点