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">

发表评论

邮箱地址不会被公开。 必填项已用*标注