maven添加以下依赖
<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>8.5.5</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId><version>8.5.5</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><version>8.5.5</version></dependency>
实现Tomcat内置类
package com.yguilai.commons.tomcat;
import org.apache.catalina.Context;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;
import java.io.File;
/**
* @author 燕归来
* @version 1.0.0
* @description
* @date 2020/3/5 13:26
*/
public class StartTomcat implements Runnable {
@Override
public void run() {
Tomcat tom = new Tomcat();
// 设置端口, 根据实际情况修改, 以免出现端口被占用的情况
tom.setPort(8083);
try {
// java资源路径
String javaPath = StartTomcat.class.getResource("/").getPath();
// webapp路径
String webPath = new File("src/main/webapp").getAbsolutePath();
// tom.addWebapp("/", webPath);中的第一参数是配置项目部署的路径,像idea中一般默认都是'/项目名', 我比较喜欢直接配置到根路径
Context context = tom.addWebapp("/", webPath);
WebResourceRoot webResource = new StandardRoot(context);
webResource.addPreResources(new DirResourceSet(webResource, "/WEB-INF/classes", javaPath, "/"));
tom.start();
} catch (Exception e) {
e.printStackTrace();
}
tom.getServer().await();
}
}
StartTomcat类的javaPath和webPath需要根据自己的项目结构进行修改
含main()方法的运行类
package com.yguilai;
import com.yguilai.commons.tomcat.StartTomcat;
/**
* @author 燕归来
* @version 1.0.0
* @description
* @date 2020/3/5 13:30
*/
public class AppMain {
public static void main(String[] args) {
new StartTomcat().run();
}
}
运行main()方法即可.
与在idea中直接配置tomcat服务相比, 使用内置tomcat项目启动速度快多了.
