一、修改pom.xml
它与 parent 是同级的,别放到parent节点里面去了
添加打包方式,默认jarwar
org.springframework.boot
spring-boot-starter-parent
2.2.1.RELEASE
com
exam_assistant_management
0.0.1-SNAPSHOT
war
exam_assistant_management
Demo project for Spring Boot
除去内置Tomcat,并添加Servlet所需要的依赖
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
javax.servlet
javax.servlet-api
3.1.0
provided
二、修改main()方法启动类
继承 SpringBootServletInitializer
类,并添加方法,记得在类上面加注解@ServletComponentScan
和@EnableAsync
可加可不加
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//WartestApplication为你的启动类名
return builder.sources(WartestApplication.class);
}
贴一个完整的启动类例子
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@ServletComponentScan
@EnableAsync
public class WartestApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//WartestApplication为你的启动类名
return builder.sources(WartestApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WartestApplication.class, args);
}
}
三、导出 war 文件
方法一
Build → Build Artifacts..… → 随便选一个吧,区别我也不知道
导出的地址在你的项目路径下的 target 文件夹下(目录和方法二一样)
方法二
在
org.apache.maven.plugins
maven-war-plugin
3.0.0
testdemo
然后在IDEA右侧 点击Maven →项目名 →Plugins →war →war:war(双击),IDEA就开始生成war文件
完成后可以从日志中看到 生成的文件目录(在工程文件夹下的target文件夹下)
四、部署到Tomcat (请看最后面的 ‘注意’ ,尤其是云服务器(利用内网穿透搭建的服务器))
到了这里前提是你的Tomcat环境都已经OK了。启动服务:bin目录下的startup.bat,关闭服务:bin目录下的shutdown.bat
方法一
用Tomcat的图形界面部署
1、先添加(设置)一个管理员的用户名与密码
打开Tomcat目录,进入conf目录,打开tomcat-users.xml,可以添加如下用户,或者解开默认注释用默认的管理账户也行,然后保存重启服务(先关闭,再启动)
随便加,随便改、相似就行了
2、开始部署
先进 127.0.0.1:8080 Tomcat 的首页 点击 Manager App 输入上面添加的账户
进去后界面如下
里面还是有几个默认的应用,不要管他,往下拉,找到
要部署的WAR文件
部署成功后 开头的 消息 栏上会显示OK,失败的话也会有相应的提示(在这个界面卸载了某个应用后,其相应的war文件还是存在于webapps目录下,下次在部署相同名字的应用的时候会提示文件已经存在,则需先删原文件,再部署即可),同时在应用程序列表里也可以找到刚部署的应用了。点击刚部署的应用名就进入部署的应用。访问路径为http://127.0.0.1:8080/testdemo/
(假如testdemo为刚部署的名字)
方法二
直接将war文件复制到webapps目录下,重启Tomcat服务。它会自动对war包进行解压缩并存放到tomcat的webapps目录下。
注意
用方法一完成上面部署,只可以在当前电脑上访问,如果利用内网穿透实现其他电脑访问的话。则还需要修改一个地方。\webapps\manager\META-INF\文件下的 context.xml。 把Valve 节点和Manager 节点注释掉(全部注释掉Context 下的内容),如下
很重要的一件事 ........解决无法访问静态资源
在我们的springboot项目中,建议在application.properties加上
#访问时加上项目名
server.servlet.context-path=/exam_assistant_management
在我们的html文件中的引用也要注意
不能这么写
正确的写法
这样子它的资源访问路径才会是127.0.0.1:8080/exam_assistant_management/static/admin/css/login.css
如果用最上面的写法话,在访问时会变成
127.0.0.1:8080/static/admin/css/login.css
exam_assistant_management是我的项目名,如果导出的war文件不是你写的名字,最好改成这个。