首先是打war包(仅针对IntelliJ IDEA开发工具开发的项目)
1.修改pom.xml文件(里面没这些需要添加)
(1)
<!--项目包名--> <groupId>com.sanfo</groupId> <!-- 打包包名--> <artifactId>springboot2-mybatis-demo</artifactId> <!-- 打包版本号--> <version>0.0.1-SNAPSHOT</version> <!-- 打包类型--> <packaging>war</packaging>
(2)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 去除内嵌tomcat,本地启动要注释掉,打包要放开--> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> <!-- 至此--> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <!-- 移除之后会报错,加入下面的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <version>2.1.10.RELEASE</version> </dependency> 至此pom.xml文件修改完成
2.启动类里面各继承和实现一个类
extends SpringBootServletInitializer implements WebMvcConfigurer
然后重新两个方法
(1)不重写这个方法tomcat会报错或者项目404
//打War包必须继承SpringBootServletInitializer并重写否则无法启动程序 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return super.configure(builder); } (2)加载静态资源方法没有这个方法,tomcat无法加载静态资源
//这里配置静态资源文件的路径导包都是默认的直接导入就可以 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/"); WebMvcConfigurer.super.addResourceHandlers(registry); }
至此Application启动类文件修改完成
3.接下来是时候展现你真正的技术了
(1)点击这个小图标
(2)选择Atifacts(谷歌翻译叫文物,百度翻译叫病人,奈何小学毕业不会翻译暂且叫他文物)
(3)点击+添加一个文物(模糊路径不知道为啥,别人打马赛克咱不能比别人差哈哈)
(4)修改名称,勾选(Include in project build)选择输出路径(我一般直接输出到本地安装tomcat/webapps/,比较懒不用复制过去了),最后还是打马赛克。
(5)希望就在眼前了apply(提交)OK(确认)(别忘了马赛克)
(6)创建一个文物
(7)大结局(选择你创建文件名称)build创建war,点击之后开发工具下面会有进度条,有问题会报错。
需要注意的是war包名最好是字母不要包含特殊字符否则不能正常访问网页http://localhost:8080/demo/
总结;网上查了很多文章都是很片面,要么是解决加载静态资源的问题,要么是解决配置在tomcat下启动问题,我花费今天一天时间把这两个问题同时解决,本人菜鸟一枚如有不对之处还请各位大神指正抱拳了。