前言,之前自己的项目打jar包,本地或centos7运行都没啥问题,也非常的方便。由于公司项目都是打war包部署到tomcat上,于是充满好奇的我要研究怎么将项目打成war包部署到tomcat,废话不多说,开干......
环境:idea,tomcat8.5(ps:网上好多有说7会有问题,本人刚好用的8,所有就直接测试了,需要注意是否修改了默认端口)
step1:pom.xml中添加
war
step2:继续添加注解
org.springframework.boot spring-boot-starter-tomcatprovided ROOT org.springframework.boot spring-boot-maven-pluginrepackage
step3:主类继承SpringBootServletInitializer,重写configure方法..(ps:HeroesApplication是我的项目,需要根据自己的项目修改)
public class HeroesApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(HeroesApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(HeroesApplication.class);
}
step4:使用idea执行打包,按步骤操作,控制台出现BUILD SUCCESS再点下一步操作,第3步执行成功了,再去到项目本地文件的target目录中,查找ROOT.war,(ps:step2中在pom里面配置了finalName)
step5:将war包放到本地tomcat的webapps目录下,再返回上一级打开bin目录,直接运行startup.bat,页面显示tomcat运行项目成功。
step6:这个时候,输入 http://localhost:8080/项目登录请求,比如本人的http:localhost:8080/monkey/login 就可以进行访问了。
总结:说说自己碰到的问题
一开始我在pom中的配置是这个
然后高兴不过一秒发现“登陆”按钮不能用,F12发现引用的layui报错找不到,经过一番排查发现,启动tomcat时要将webapps中的文件都删掉,当然除了刚打的monkey.war包(ps:对,你没有看错,这个时候还不是ROOT.war),再重启tomcat登陆页面的“登陆”按钮可以用了,F12也没有了报错,问题应该是有缓存。
输入用户名、密码,点击“登陆”按钮,果然,果然又报错了,404,这个问题就让人头疼了,经同事指点,所以后面就改成了pom中的
之前打成monkey.war,启动tomcat的时候发现会在webapps目录下生成ROOT、monkey文件夹,访问路径要写成 http:localhost:8080/monkey/monkey/login,登陆的时候会报错404
改成ROOT.war,启动tomcat的时候发现会在webapps目录下生成root文件夹,访问路径正常 http:localhost:8080/monkey/login,登陆成功。
本地和centos7上的操作方法一样。



