前沿
故事发生背景:最近帮老师的项目做了一个联调,项目是springboot项目,但是打包却打的是war包,这就不是很常见了,中间出了很多问题,便从网上找了不少资料,便总结出来流程,以便自己和他人方便使用。
一、修改pom.xml文件
二、移除嵌入式tomcat插件
在 pom.xml 里找到spring-boot-starter-web依赖,在其中添加如下代码,
因为spring-boot-starter-web 依赖中有Tomcat 的依赖,点进去就可以看到,如下图
三、添加servlet-api的依赖
在 pom.xml 中新增以下依赖:
四、修改启动类,并重写初始化方法
我们平常用 main 方法启动的方式,都有一个App的启动类,代码如下:
@SpringBootApplication
public class DemoFengfanliApplication{
public static void main(String[] args) {
SpringApplication.run(DemoFengfanliApplication.class, args);
}
}
我们需要类似于web.xml 的配置方式来启动 Spring 上下文了,在 Application 类的同级添加一个(自定义的)SpringBootStartApplication类,其代码如下:
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(DemoFengfanliApplication.class);
}
}
五、打包
1. 方式一:maven命令
在项目根目录下(即包含pom.xml的目录),在命令行里输入:mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,出现 [INFO] BUILD SUCCESS 即为打包成功。
2. 方式二:可视化打包
六、部署
然后把target目录下的war包放到 tomcat 的 webapps 目录下,启动 tomcat,即可自动解压部署。最后在浏览器中输入
http://localhost:[端口号]/[打包项目名]/
发布成功
七、修改打包默认名称
配置configuration 中的 finalName,就是打包后的默认名称。进行名称规范合理化。