主要目标是将spring-boot-maven-plugin
Spring Boot 应用程序打包到具有所有依赖项的可执行 jar 中。可以在没有spring或spring boot的项目中使用吗?我的意思是不使用 spring 依赖项,而只是用于加载依赖 jar 的类加载器机制。
2 回答
是的你可以!实际上,我进行了测试,我很高兴发现spring-boot-maven-plugin
repackage
它完全不知道Main
该类使用什么,并且在很大程度上与 Springframework 完全分离(不幸的是文档没有提到这一点,但我猜 Spring 真的想要使用他们的东西)。
它基本上是 Spring 版本的onejar 插件(但它也将自己的 shell 脚本添加到 jar 中)。
spring-boot-maven-plugin
repackage ( ) 本质上创建了自己的微型容器,带有一个小型加载程序,该加载程序查找由您的项目打包(即或)spring-boot:repackage
确定的特定布局(罐子所在的位置)。小加载器不加载任何 Springframework 代码。<packaging>war</packaging>
<packaging>jar</packaging>
当然,您的Main
班级必须知道如何启动 servlet 容器(或您计划加载的任何内容)。大多数 servlet 容器都有关于如何在嵌入式模式下运行的文档。
至于代码示例,您将在该<build>
部分中添加以下内容:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<fork>true</fork>
</configuration>
</plugin>
然后你像运行构建mvn package spring-boot:repackage
。该插件的文档实际上还不错。
我猜 Spring Boot Maven 插件仅适用于 Spring 项目,以一次性带来所有依赖项。
如果您在识别依赖项时遇到问题,您可以简单地创建一个 Spring Boot 项目。完成后,您将获得 spring 项目中的所有库。在没有 spring 的情况下复制或导入项目中的这些库。
使用这种方法,具有所有依赖项的项目设置将变得更加容易。