Springboot -war部署
修改打包形式
<!--改为war方式 --> <packaging>war</packaging>
1.2 移除嵌入式tomcat插件
<!-- 在项目打包时,剔除springboot内置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>
1.3 添加servlet-api的依赖
作用:编写servlet时用我们自己引用的包,而运行时用tomcat自己的包,这样就不用冲突了,又能正常开发代码
下面两种方式都可以,任选其一 第一种: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> 第二种: <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency>
1.4 maven打包配置
<build>
<!-- 自定义打包名称
这里的名称必须与application.properties中server.context-path的值一致
否则即使Tomcat启动项目成功,在访问时也会导致404错误 -->
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source><!-- 指定jdk版本 -->
<target>${jdk.version}</target>
<encoding>${project.build.sourceEncoding}</encoding><!-- 指定编码版本 -->
</configuration>
</plugin>
<!--该插件的主要功能是进行项目的打包发布处理 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.4.RELEASE</version>
<configuration> <!--设置程序执行的主类,指定程序入口 -->
<mainClass>com.web.boot.ApplicationStart</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!-- repackage将jar / war 重新打包为可执行文件 -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
1.5 修改启动类,并重写初始化方法
1.5.1 我们平常用main方法启动的方式,都有一个App的启动类,代码如下:
@SpringBootApplication public class ApplicationStart{ public static void main(String[] args) { SpringApplication.run(ApplicationStart.class, args); } }
1.5.2 使用外置的tomcat启动,我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootStartApplication类,其代码如下:
/** * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ @SpringBootApplication public class ApplicationStart extends SpringBootServletInitializer{ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(ApplicationStart.class); } public static void main(String[] args) { SpringApplication.run(ApplicationStart.class, args); } }
spring boot就是为了简化开发的,也就是用注解的方式取代了传统的xml配置。
SpringBootServletInitializer就是原有的web.xml文件的替代。
二.打包部署
2.1在项目根目录下(即包含pom.xml的目录),在命令行里输入:
clean package -D maven.test.skip=true

等待打包完成,出现[INFO] BUILD SUCCESS即为打包成功。

2.2
即可自动解压部署。

三.运行
3.2 ${Tomcat_home}/bin/目录下执行startup.sh(linux)
四.访问测试

使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的端口
将失效,请使用${Tomcat_home}/conf/server.xml中的端口进行访问。

建议pom.xml文件中<build></build>标签下添加<finalName></finalName>标签,且需和application.properties(或者application.yml)中server.context-path的值一致
作者:皓月无边*半步青莲
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


浙公网安备 33010602011771号