如何在spring-boot-maven的可执行jar中添加自定义启动器

时间:2017-03-13 19:15:07

标签: maven spring-boot spring-boot-maven-plugin

如何将自定义加载程序添加到可执行jar? 目前我通过打开jar文件手动完成,粘贴类并在结束时重新签名。 -.-

提前致谢, 佩德罗席尔瓦

1 个答案:

答案 0 :(得分:0)

可执行jar限制

使用Spring Boot Loader打包应用程序时,需要考虑两种类型的限制。

Zip条目压缩

必须使用ZipEntry.STORED方法保存嵌套jar的ZipEntry。这是必需的,以便我们可以直接寻找嵌套jar中的单个内容。嵌套的jar文件本身的内容仍然可以被压缩,外部jar中的任何其他条目也是如此。

系统类加载器

在加载类时,启动的应用程序应该使用Thread.getContextClassLoader()(默认情况下,大多数库和框架都会这样做)。尝试通过ClassLoader.getSystemClassLoader()加载嵌套的jar类将失败。请注意,java.util.Logging始终使用系统类加载器,因此您应该考虑使用不同的日志记录实现。

替代单罐解决方案

如果上述限制意味着您无法使用Spring Boot Loader,则可以考虑以下替代方案:

  1. Maven Shade Plugin
  2. JarClassLoader
  3. OneJar
  4. 资源链接:

    1. The executable jar format
    2. spring boot loading jars (application dependencies and external file system jars)