600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 易筋SpringBoot 2.1 | 第三十四篇:Spring Boot导出war包部署到外部Tomcat

易筋SpringBoot 2.1 | 第三十四篇:Spring Boot导出war包部署到外部Tomcat

时间:2018-08-30 19:25:27

相关推荐

易筋SpringBoot 2.1 | 第三十四篇:Spring Boot导出war包部署到外部Tomcat

写作时间:-02-27

Spring Boot: 2.1 ,JDK: 1.8, IDE: IntelliJ IDEA,

说明

项目打成war包部署到外部的Tomcat上,要达到这种目的,需要修改一些东西。

1. 新建SprintBoot工程

1.1 IDEA新建一个SpringBoot工程,pom.xml添加web依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

1.2DemoApplication.java类添加根路径返回字符串

@SpringBootApplication@RestControllerpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@RequestMapping("/")public String index() {return "Greetings from Spring Boot!";}}

1.3 运行项目,访问首页

% curl http://localhost:8080Greetings from Spring Boot!%

如果需要实践SprintBoot请参考:【第一篇:构建第一个SpringBoot工程】

2. 修改Maven的打包方式

pon.xml添加一项,Maven默认的packing为jar,所以要将其改为war:

<packaging>war</packaging>

添加的位置如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- ... --><packaging>war</packaging><!-- ... --></project>

3. 修改内迁容器的依赖范围

pom.xml中添加依赖,将spring-boot-starter-tomcat的要构建可执行并可部署到外部容器中的war文件,需要将嵌入容器依赖项标记为provided,如以下示例所示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>

4. 修改启动类

因为Spring WebFlux没有严格的依赖于Servlet API和 applications 部署在默认集成的Reactor Netty server,War部署并不支持WebFlux applications.

部署为war文件的第一步是,启动类要继承于子类SpringBootServletInitializer, 并且要重载方法configure. 这样处理是为了让Spring Framework’s Servlet 3.0支持并配置应用被servlet container加载. 通常的做法是,修改application’s main类去集成子类SpringBootServletInitializer, 修改如下:

package com.zgpeace.springboot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class DemoApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(DemoApplication.class);}@RequestMapping("/")public String index() {return "Greetings from Spring Boot!";}}

5. Maven打包

5.1 在IDEA的右侧点击Maven Projects > package > Run, 就开始构建package

5.2 最终控制台显示如下日志, 表示成功

...[INFO] --- maven-war-plugin:3.2.3:war (default-war) @ demo ---[INFO] Packaging webapp[INFO] Assembling webapp [demo] in [/Users/zgpeace/Spring-Boot/basic/ExportToTomcat/target/demo-0.0.1-SNAPSHOT][INFO] Processing war project[INFO] Webapp assembled in [147 msecs][INFO] Building war: /Users/zgpeace/Spring-Boot/basic/ExportToTomcat/target/demo-0.0.1-SNAPSHOT.war[INFO] [INFO] --- spring-boot-maven-plugin:2.1.13.RELEASE:repackage (repackage) @ demo ---[INFO] Replacing main artifact with repackaged archive[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 7.528 s[INFO] Finished at: -02-28T07:44:23+08:00[INFO] Final Memory: 31M/389M

5.3 在target下面可以找到打出来的包demo-0.0.1-SNAPSHOT.war

5.3 在war包上右键Reveal in Finder,拷贝war包,放到Tomcat的webapp目录下, 启动Tomcat, 运行链接记得要加上访问路径,结果如下:

% curl http://localhost:8080/demo-0.0.1-SNAPSHOT/Greetings from Spring Boot!%

如果启动有问题,可以先访问http://localhost:8080,看看Tomcat是否启动成功。更多Tomcat知识请参考:Mac下安装配置Tomcat 9, Homebrew安装Tomcat

代码下载

/zgpeace/Spring-Boot2.1/tree/master/basic/ExportToTomcat

参考

https://docs.spring.io/spring-boot/docs/2.1.13.RELEASE/reference/htmlsingle/#build-tool-plugins-maven-packaging

https://docs.spring.io/spring-boot/docs/2.1.13.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file

/zgpeace/article/details/104529616

/zgpeace/article/details/85111272

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。