SpringBoot在Intellij Idea中使用gradle打成war包部署到Tomcat
导语:叶子写了一个SpringBoot在打成war包部署到Tomcat时,老是提示404错误,经过多次检查修正,终于可以运行在tomcat下了。
一、修改gradle.build文件的参数
添加如下配置
apply plugin: ‘war’
修改依赖,将tomcat的依赖范围修改为providedRuntime
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
//mybatis
implementation('com.baomidou:mybatis-plus-boot-starter:2.2.0')
//mybatis-plus 模板
implementation('org.apache.velocity:velocity-engine-core:2.0')
//自定义jar包,包含了oracle的数据库的连接
implementation fileTree(dir:'libs',include:['*.jar'])
//将tomcat的依赖范围修改为providedRuntime
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
implementation('org.projectlombok:lombok:1.18.4')
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
二、主类继承SpringBootServletInitializer,重写configure方法
需要将你的主类Application.java改成下面的样子。
package com.cddx.hx;
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;
@SpringBootApplication
public class HxApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(HxApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(HxApplication.class, args);
}
}
HxApplication这个类名根据你的实际情况修改。
三、修改src\main\resources\application.yml
增加下面的配置,这个配置不是必须的,但是如果你的tomcat服务器上有多个springboot的项目在运行,如果不修改的话,就只能运行一个。
#spring.jmx.enabled=false 可以在一个tomcat启动多个springboot项目
spring:
jmx:
enabled: false
四、使用gradle build命令打War包
打开Intellij Idea中的View -> Tool Windows -> Terminal ,在此窗口中直接运行命令。
gradle build
运行完成后,在项目的\build\libs目录中就会有一个 项目名称的war包,例如:
hx-0.0.1-SNAPSHOT.war
五、部署到Tomcat
直接将你的war包上传到Tomcat下面的webapps目录中,如果在conf目录下的server.xml中的unpackWARs等于true,那么war会自动解压。
autoDeploy等于true,那么会自动部署。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">