作为一个刚接触Java和Spring的人,我一直在学习他们的REST API教程。引入了一个常规工作流,您可以在其中嵌入 Jetty/Tomcat,然后运行可执行的 Jar 文件。当引入使用 Spring 构建 REST 服务教程时,此工作流似乎发生了变化。他们的书签演示项目使用多模块 maven 配置。似乎没有在任何地方定义主清单属性。
Maven 配置当前为每个模块生成一个单独的 jar。
理想的目标是采用书签演示项目,将 Swagger 添加到其中,并在 Docker 中循环。现实的目标是使用Jetty或Tomcat运行项目。
你知道我如何使用 Jetty 或 Tomcat 部署 Spring 书签演示吗?谢谢你的时间。
可以在这里找到指南,但简而言之,这些是您必须做的事情:
- 注释为
@SpringBootApplication
的类(main 方法所在的位置)必须扩展SpringBootServletInitializer
并重写配置方法(下面的基本示例) - 修改构建系统以生成 WAR 文件
- 马克雄猫/码头提供
-
将 WAR 文件部署到容器(有很多方法可以做到这一点,但它们独立于您的实现)
@SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
有一个
SpringBoot Getting Started Guide for Docker,我建议你在更改任何内容之前先浏览一下,因为 SpringBoot 具有广泛的 Docker 支持,你可能不需要将应用程序更改为 WAR 文件。
如果项目是 maven 项目,则使用包目标使用"mvn 包"构建部署单元并部署生成的 .war(假设这就是您的配置方式)。
如果该示例已经配置为与嵌入式 Jetty 一起运行,那么您不需要构建一个可部署的单元并将其部署到其他任何地方,您只需运行它 - 这就是嵌入式容器的重点;它已经配置为包含它自己的运行时,您只需运行它。