我已经尝试过各种库,但是我无法使它们完全发挥作用。您已经拥有了一些巧妙的类加载技巧来将war文件保持原样。而且您已经拥有将所有jar爆炸到单独文件中并将其全部塞入可执行jar中的功能。
在第一类产品中,我发现Winstone是我所能找到的最好的产品。只需添加插件,重建并运行即可。确实,有些东西将战争部署到了嵌入式Web容器中。不幸的是,它不够强大,无法运行复杂的Web应用程序。
我正在排除第二类的解决方案,因为解压缩包含相同路径的文件的jar时文件冲突。通常是meta-INF /
....更确切地说是与Spring相关的元数据。必须将其合并到一个文件中。否则,该应用程序将无法启动。
我选择了第三种解决方案:让可执行jar包含war文件。运行时,它将把war文件提取到一个临时目录中,并使用刚刚提取的war文件运行嵌入式Web容器(在我的情况下为Tomcat)。此外,在正确的网址上打开浏览器。
它很容易实现,任何人都可以启动它。尽管我本来希望将jar文件保持这样,但这样可以避免由于类加载或jar文件冲突引起的任何复杂情况。



