Spring Boot Maven 插件:它实际上做了什么?

Spring Boot Maven plugin: What does it actually do?

谁能告诉我 Spring Boot Maven 插件的实际作用?我一直在谷歌搜索,但我发现的大部分内容都没有给出清晰的图片。

到目前为止,我的印象是它可以创建一个 "fully executable" jar,不需要通过 java -jar 成为 运行,而且还可以制作更多您 运行 通过 java -jar 的传统 jar。我敢肯定它还能产生其他变化。

我也觉得它可以打包依赖和资源。当应用程序 运行.

时,我完全不清楚资源是如何 "accessed" 的

在上述任一结果中,我是否只需要 jar 而不需要其他任何东西(即没有资源文件、依赖 jar 等)?换句话说,罐子是独立的吗?当我打开罐子时,它所需要的一切似乎都在那里。真的是这样吗?

现在,让我们进一步了解我正在尝试做的事情。我正在使用 REST API 编写一组 Spring 服务。每个服务都将 运行 在其自己的 VM(或容器 - 未来)中。这些服务被打包到一个 jar 中,要使用的服务是通过 Spring 配置文件(即 spring.profiles.active=a-profile)选择的。

我以前做这样的事情的方法是使用 Maven 程序集插件为每个单独的服务生成一个存档 (zip) 并包含所有必需品(依赖 jar、资源文件等) .我会把它放在需要的地方,解压它,调整一些配置,然后 运行 通过包含的脚本。

当涉及 Spring Boot Maven 插件时,我得到的印象不是 "how it's done"。

The Spring Boot Maven Plugin provides Spring Boot support in Maven, letting you package executable jar or war archives and run an application “in-place”.

它构建了与您的应用程序捆绑在一起的 uber jar Tomcat。如果您使用 jar -tf <file_name> 检查 jar 的内容,您会发现格式有点不同。 Spring 启动 类 看起来很正常,但是您的项目文件位于 BOOT-INF 文件夹中。