前言
在用了一段时间springboot后发现使用内置的tomcat开发项目时有诸多不便,所以改为了外置tomcat的方式进行开发,有一下几点好处:
- 静态资源更新时,不需要重启项目。idea中在使用外部web服务器的情况下有自动更新静态资源的方法。
- 静态资源变动时,可以在项目导出目录中检查静态资源是否同步到运行目录中。
- 静态资源可以不通过controller控制直接访问。
- 方便直接导出war包发布到tomcat上部署。
- 修改java类的时候,也不用每次都重启tomcat,只要redeploy就行。
一、创建SpringBoot项目
正常流程创建SpringBoot项目并进入项目。
二、创建ServletInitializer.java
package your package;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(IntelligentArchivesBaseApplication.class);
}
}
三、标记java目录为source root,resources为resources root
四、创建webapp目录
在main目录下,创建webapp目录,并在webapp下创建:1、WEB-INIF目录。2、favicon.ico文件,网站图标。3、WEB-INF下创建web.xml
web.xml内容:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>网站名字 </display-name>
</web-app>
五、修改pom.xml
5.1 在项目<name>前加入<packaging>war</packaging>
5.2 在springboot中,移除内容tomcat插件
找到spring-boot-starter-web,修改如下
<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>
<!-- slf4j会有冲突,所以最好也移除 -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
5.3 增加外部tomcat库
<!-- 外部tomcat库 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>9.0.24</version>
<scope>provided</scope>
</dependency>
六、安装外部tomcat
如:D:/tomcat9
七、配置外部tomcat
7.1 点击顶部的Add Configurations
7.2 添加tomcat server运行方式
如果在列表中找不到TomcatServer,请点击列表最下方的“33 items more..”
7.3 配置tomcat服务器地址
选择tomcat所在安装目录
7.4 reimport maven
如果reimport的时候,因为网速卡住了,可添加国内镜像
<!-- 国内阿里云镜像 -->
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
7.5 此时会只动生成first-demo:war exploded 运行导出配置
7.6 配置运行目录内的导出文件
在configurations中 点击fix,将导出文件放入tomcat中。
7.7 配置web
如果在项目配置中,modules中没有看到“web”项,可以手动添加一个。
文件会自动关联,有fix弹出时,点击fix,并且选择include到 :war exploded中。
7.8 设置运行目录
设置为“/”,跟目录。
8、完成
使用运行或调试方式运行项目