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