准备
改造spring-boot项目
SpringBoot 项目部署到服务器的两种方式_springboot application.yml 是否需要传到服务器-CSDN博客
SpringBoot项目改造打包成war的流程
- 1、pom.xml配置修改
<packaging>jar</packaging>
//修改为
<packaging>war</packaging>
- 2、pom文件添加如些依赖(这个依赖主要是用于在和jsp进行整合的使用,可酌情添加)
<!--添加servlet-api的依赖,用来打war包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
- 3、排除springboot内置的tomcat干扰
<!--最终打成war包,排除内置的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>
4、改造启动类
如果是war包发布,需要增加SpringBootServletInitializer子类,并重写其configure方法,或者将main函数所在的类继承SpringBootServletInitializer子类,并重写configure方法
当时打包为war时上传到tomcat服务器中访问项目始终报404错就是忽略了这个步骤!!!
改造之前:
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class,args);
}
}
改造之后:
@SpringBootApplication
public class MainApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MainApp.class,args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(MainApp.class);
}
}
这种改造方式也是官方比较推荐的方法
- 5、pom文件中不要忘了maven编译插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 6、在IDEA中使用mvn clean命令清除旧的包,并使用mvn package生成新的war包
执行完毕后,可以看到war包已经生成了,默认是在target目录下,位置可以在pom文件中进行配置:
- 7、使用外部Tomcat运行该 war 文件,
有两种方式。第一种把 war 文件直接丢到 tomcat的webapps目录,启动tomcat;第二种使用tomcat - conf - server.xml配置,使用target目录中war包解压的文件夹为项目地址进行部署
部署
(首次使用idea的docker插件部署war)[https://blog.csdn.net/weixin_42612454/article/details/103296475]
感谢作者分享SpringBoot部署Web应用的经验,文章内容清晰明了,步骤详细,对于初学者非常友好。其中,改造SpringBoot项目打包成war包的流程和部署到外部Tomcat服务器的方式都讲解得非常详细,让读者可以快速上手。此外,作者还分享了使用IDEA的docker插件部署war包的方法,为读者提供了更多的选择。
不过,在排除springboot内置的tomcat干扰这一步骤中,代码中的依赖排除部分应该是
spring-boot-starter-tomcat
,而非spring-boot-starter-web
。另外,文章中可以增加更多关于部署过程中可能遇到的问题及解决方法的内容,例如如何解决端口冲突等等。总体来说,这篇文章是一篇非常实用的技术分享,对于想要快速部署SpringBoot Web应用的读者来说是非常有帮助的。希望作者能够继续分享更多实用的技术经验,让读者可以更好地学习和成长。