springBoot 项目war包部署及改为war包后资源路径错误问题

时间:2022-02-11 15:09:08

参考资料:

https://blog.csdn.net/rico_zhou/article/details/83415114

https://blog.csdn.net/pz641/article/details/85029431

https://blog.csdn.net/m0_37981898/article/details/82155912

因为一些特殊需要,要将springboot 项目由jar包改为war包发布,记录实现的过程和出现的问题:

1. 首先,将pom.xml中打包配置改成war

springBoot 项目war包部署及改为war包后资源路径错误问题

2. springboot中自带tomcat,打jar包会用这个tomcat启动,我们需要打包的时候排除这个自带的tomcat,有两种方式(以下图片来自网络(自己实在不想截图了..))

方式一:

springBoot 项目war包部署及改为war包后资源路径错误问题

方式二:  建议使用

springBoot 项目war包部署及改为war包后资源路径错误问题

3. 更改启动类,继承SpringBootServletInitializer ,覆盖configure(),把启动类Application注册进去, 注意: 此类需要放在Application启动类同级目录

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /**
* springboot 项目打成war包访问,初始化启动Spring应用上下文
* @author qxl
*
*/
public class SpringBootStartApplication extends SpringBootServletInitializer { @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
} }

4. 打war包发布,两种方式

方式一 :  执行:mvn clean package ,打包结束后即可在target文件夹中找到war包,或者在eclipse中右击项目>Run as>Maven install打包结束同样在target目录下找到war

方式二 :   idea 工具导出war包

5. 部署到 tomcat, springBoot不同版本内置tomcat版本是不一样的(下面的图也是截的别人的),这里建议使用8.5以上版本

springBoot 项目war包部署及改为war包后资源路径错误问题

将项目部署到tomcat后启动,项目是可以启动的,但是很多资源文件失效找不到了,原因是tomcat启动项目,需要带上项目名,之前jar包访问资源路径没有项目名,导致资源路径错误

解决方案有两种: (注意,以下两种方式一定要删除ROOT文件夹,否则会有问题)

一 : 模拟Tomcat启动页面,替换 ROOT文件夹

将webapps目录下的ROOT文件夹删除,将自己的war包更名为ROOT.war,重新启动tomcat,浏览器中输入localhost:8080即可访问

springBoot 项目war包部署及改为war包后资源路径错误问题

二 :  修改tomcat配置,不需要项目名访问,还是需要先删除ROOT文件夹

修改conf目录下server.xml

springBoot 项目war包部署及改为war包后资源路径错误问题

修改host内容,将

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

改为 :

<Host name="localhost" appBase="" unpackWARs="true" autoDeploy="true">

               <Context docBase="webapps/你的项目名" path="" reloadable="true" source="org.eclipse.jst.jee.server:你的项目名"/>

          如下图,改之前:

            springBoot 项目war包部署及改为war包后资源路径错误问题

改之后:(vrs为项目名称)

springBoot 项目war包部署及改为war包后资源路径错误问题

修改好之后运行tomcat,可以不需要项目路径访问项目,也就是说访问 http://localhost:8080就行了