【问题标题】:How to add custom launcher to spring-boot-maven's executable jar如何将自定义启动器添加到 spring-boot-maven 的可执行 jar
【发布时间】:2017-03-13 19:15:06
【问题描述】:

如何将自定义加载程序添加到可执行 jar? 目前,我通过打开 jar 文件、粘贴类并在末尾重新签名来手动执行此操作。 -.-

提前致谢, 佩德罗·席尔瓦

【问题讨论】:

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


    【解决方案1】:

    可执行的 jar 限制

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

    Zip 条目压缩

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

    系统类加载器

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

    替代单罐解决方案

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

    1. Maven Shade Plugin
    2. JarClassLoader
    3. OneJar

    资源链接:

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

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 2017-11-21
      • 2020-04-06
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 2019-05-04
      相关资源
      最近更新 更多