
本文共 2891 字,大约阅读时间需要 9 分钟。
第一步
在pom.xml中将默认的jar方式改为war:
... <artifactId>homeworkme</artifactId> <version>0.0.1-SNAPSHOT</version> <name>homeworkme</name> <description>Demo project for Spring Boot</description> <!--默认为jar方式--> <!--<packaging>jar</packaging>--> <!--改为war方式--> <packaging>war</packaging> <properties> <java.version>1.8</java.version> </properties> <dependencies> ... </dependencies> ...
第二步
排除内置的Tomcat容器(两种方式):
1.排除spring-boot-starter-web中的Tomcat:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions></dependency>
2.添加依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。 相当于compile,但是打包阶段做了exclude操作--> <scope>provided</scope></dependency>
第三步
在springBoot启动类的同级目录添加一个继承SpringBootServletInitializer
的类或者启动类继承该类,实现configure
方法。
SpringBootServletInitializer源码注释:
Note that a WebApplicationInitializer is only needed if you are building a war file and deploying it.
If you prefer to run an embedded web server then you won’t need this at all.
注意,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer。
如果你喜欢运行一个嵌入式Web服务器,那么你根本不需要这个。
package com.example.homeworkme;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;public class ServletInitializer extends SpringBootServletInitializer { public ServletInitializer() { System.out.println("初始化ServletInitializer"); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(HomeworkmeApplication.class);//启动类名 }}
第四步
为了防止应用上下文所导致的项目访问资源加载不到的问题,建议pom.xml文件中<build></build>
标签下添加<finalName></finalName>
标签,并设置maven打包时跳过单元测试:
<build> <!-- 应与application.properties(或application.yml)中context-path保持一致 --> <finalName>war包名称</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> <configuration> <!--true跳过测试--> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build>
第五步
通过maven命令进行打包或者在IDEA顶部菜单栏目中点击Build,再选择Build Artifacts,最后点击build,在项目的target目录下就会生成对应的war包。
最后一步
将生成的war包放到tomcat的webapps目录下,通过ip/项目名访问即可。
注意
当以war包形式打包部署时,使用的是外部Tomcat,这个时候application.yml配置的端口将失效。
发表评论
最新留言
关于作者
