需要引入的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(); }
