【问题标题】:how to understand spring boot about executable jar如何理解关于可执行jar的spring boot
【发布时间】:2016-07-10 09:42:55
【问题描述】:

我是 Spring Boot 的新手,我看到了关于 spring-boot 的可执行 jar。 它说:

可执行的 jar 和 Java

Java 不提供任何标准方式来加载嵌套的 jar 文件(即 jar 文件本身包含在 jar 中)。这可以是 如果您希望分发一个独立的 应用。

为了解决这个问题,许多开发人员使用“超级”罐子。一个超级罐子 只需将所有 jar 中的所有类打包到一个存档中。这 这种方法的问题是很难看出哪个 您在应用程序中实际使用的库。它也可以 如果使用相同的文件名(但内容不同)会出现问题 在多个罐子里。

Spring Boot 采用了不同的方法,允许您实际嵌套 直接装罐子。

我想知道 uber jars 或 fat jars 是否有一些缺点,即我们必须重新部署整个 uber-jars,可能会遇到 NoSuchMethodError 的问题。Spring boot 可执行 jar 与 uber jars 有何不同。既然有很多缺点,为什么spring boot还要用这种jar呢?

【问题讨论】:

    标签: java spring jar spring-boot


    【解决方案1】:

    使用 Spring Boot,您可以使用 spring-boot-maven-plugin 或 spring-boot-gradle-plugin,它们会使用所有依赖项重新打包您的 JAR。这称为胖 JAR。这与 uber JAR 不同。

    Spring Boot 打包:包含依赖项的 JAR 归档文件作为 JAR。 Uber JAR:包含所有依赖项的编译类文件的 JAR 存档。

    所以 Spring Boot 就像带有嵌入式 tomcat 的 WAR。这样您就可以将其作为 JAR 执行。这将成为托管云原生应用程序的最现代方法。

    如果您使用的 API 不兼容版本具有传递依赖项,理论上您可以得到 NoSuchMethodError,但这个问题也存在于 WAR 打包中。

    【讨论】:

    • 谢谢你的回答。我很感激。我想知道spring boot如何解决重新部署整个大容量的fat-jar,上传这个jar会花费很多时间.
    • 和 wiki 说:我们建议不要使用 uber-JAR。它们给下游消费者带来了很多问题。
    • 以前,我错过了您问题的主要观点。答案已更新。
    猜你喜欢
    • 2017-11-21
    • 2018-05-26
    • 2018-04-06
    • 2016-02-09
    • 2014-12-18
    • 1970-01-01
    • 2017-08-20
    • 2014-06-06
    相关资源
    最近更新 更多