首页 > 解决方案 > 在 Spring Boot 应用程序中打包 Spring 应用程序(JAR)

问题描述

Spring 应用程序“A”打包为 JAR(使用 maven),应用程序“A”的 POM 文件包含一些定义的特定 maven 依赖项。

在另一个打包为 JAR 的 spring boot 应用程序“B”中,添加了应用程序“A”的依赖项,但是在执行“B”时,它会为应用程序“A”中提到的依赖项抛出很少的 ClassNotFound/NoClassDef 错误。

注意 - 应用程序“A”不是引导项目。这是一个使用 maven 构建的简单 Spring 应用程序。

请协助。如果我需要分享任何代码,请告诉我。提前致谢。

标签: javamavenspring-boot

解决方案


Spring boot jar 并不是真正的 jar,它是这里的核心问题。为方便起见,它只打包为 jar,但如果您打开它(使用 WinRaR/WinZip 或任何其他程序),您会看到它没有 JAR 结构,例如,所有依赖项都包含在 JAR 中(请参阅 BOOT-INF/lib)。

因此,底线是,如果 A 和 B 都是 Spring Boot 应用程序,则您不能在它们之间建立依赖关系,它将无法工作。

作为一种解决方案,考虑将应该共享的代码提取到第三个模块“C”中,该模块将具有打包 jar,但其本身不会是 Spring Boot 应用程序。

之后让 A 和 B 都依赖于 C 并且你设置好了


推荐阅读