需要引入的maven依赖
<!--属性文件 -->
<properties>
<tomcat.version>8.5.24</tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
</dependencies>
<build>
<finalName>Mytomcat</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- maven打包插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>hope.redheart.wx.StartTomcat</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
启动方法
public static void main(String[] args) throws ServletException, LifecycleException { int port = 80; if (args.length == 1) { port = Integer.parseInt(args[0]); } // 获取项目绝对路径 File webappPath = new File(System.getProperty("user.dir")); // 创建tomat容器 Tomcat tomcat = new Tomcat(); // 设置端口 tomcat.setPort(port); // 设置webapp目录 StandardContext sct = (StandardContext) tomcat.addWebapp("/", webappPath.getAbsolutePath()); // web项目路径 WebResourceRoot resourceRoot = new StandardRoot(sct); // 相当于webapps中的一个项目文件夹 DirResourceSet dirResourceSet = new DirResourceSet(); // java字节码文件路径 dirResourceSet.setBase(new File("target/classes").getAbsolutePath()); // tomcat的默认写法 /WEB-INF/classes web项目的默认 dirResourceSet.setWebAppMount("/WEB-INF/classes"); // 这个项目文件夹的上一级目录,在tomcat中就是webapps dirResourceSet.setRoot(resourceRoot); dirResourceSet.setInternalPath("/"); // 相当于把项目设置到webapp中 resourceRoot.addPreResources(dirResourceSet); sct.setReloadable(false); // 一个web项目 sct.setResources(resourceRoot); tomcat.start(); System.out.println("Tomcat已在本地" + port + "端口启动!"); // 方法阻塞,否则main方法运行完毕就退出,tomcat也就关闭了 tomcat.getServer().await(); }
