3

主要目标是将spring-boot-maven-pluginSpring Boot 应用程序打包到具有所有依赖项的可执行 jar 中。可以在没有spring或spring boot的项目中使用吗?我的意思是不使用 spring 依赖项,而只是用于加载依赖 jar 的类加载器机制。

4

2 回答 2

3

是的你可以!实际上,我进行了测试,我很高兴发现spring-boot-maven-plugin repackage它完全不知道Main该类使用什么,并且在很大程度上与 Springframework 完全分离(不幸的是文档没有提到这一点,但我猜 Spring 真的想要使用他们的东西)。

它基本上是 Spring 版本的onejar 插件(但它也将自己的 shell 脚本添加到 jar 中)。

spring-boot-maven-pluginrepackage ( ) 本质上创建了自己的微型容器,带有一个小型加载程序,该加载程序查找由您的项目打包(即或)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。该插件的文档实际上还不错。

于 2017-03-25T15:05:11.833 回答
-2

我猜 Spring Boot Maven 插件仅适用于 Spring 项目,以一次性带来所有依赖项。

如果您在识别依赖项时遇到问题,您可以简单地创建一个 Spring Boot 项目。完成后,您将获得 spring 项目中的所有库。在没有 spring 的情况下复制或导入项目中的这些库。

使用这种方法,具有所有依赖项的项目设置将变得更加容易。

于 2017-03-09T13:29:50.573 回答