转载:开发工具中SpringBoot使用外置Tomcat启动 (亲测有效)-第458篇 - 知乎
一、准备工作
有些工作在前面的小节中已经介绍过了,这里不重复编写,但简单的做个说明。
1.1 环境说明
(1)操作系统:MacOS Catalina
(2)Idea:IntelliJ IDEA 2022.2.2 (Ultimate Edition)
(3)Spring Boot:2.7.6
(4)外置Tomcat:8.5.57
1.2 准备工作
(1)下载Tomcat,确保外置的Tomcat可以正常的启动,注意Tomcat的版本号最好是和Spring Boot相应的版本的Tomcat和JDK的版本号对应,免得碰到奇奇怪怪的问题。
(2)准备一个Spring Boot项目,确保以及配置好了war包的打包形式了,这一个步骤可以参考文章:
《SpringBoot引入外部jar包,项目打包成war包发布(亲测有效) - 第453篇》
《SpringBoot添加外部jar包及打包(亲测有效) - 第452篇》
更多@打包的知识,关注公众号「SpringBoot」回复关键词[453 | 452],查看文章。
二、配置外置Tomcat
一切都准备好,就可以配置外置的Tomcat,然后在开发工具中使用外置的Tomcat进行启动Spring Boot的应用。
2.1 Edit Configurations
选择Edit Configurations...
2.2在Run/Debug Configurations 对话框选择Tomcat
在Run/Debug Configurations 对话框选择Tomcat:
2.3在Run/Debug Configurations 对话框配置本地Tomcat
在Run/Debug Configurations 对话框配置本地Tomcat:
2.4在Run/Debug Configurations 对话框配置Deployment
在Run/Debug Configurations 对话框配置Deployment:
选择war包:
2.5在Run/Debug Configurations 对话框配置修改Application context
在Run/Debug Configurations 对话框配置修改Application context:
点击OK,基本配置完成,在Idea的配置可以看到已经配置的Tomcat。
2.6启动Tomcat
注意,不能右键启动类ExampleApplication,执行启动。
正确如下:
选择已经配置的Tomcat,选择Run或者Debug运行即可,启动成功如下:
2.7测试
请求URL:http://localhost:8080/package-war-test/test1
三、外置jar无法访问
以为一切都很完美了,没想到有外置jar的方法的时候,直接报错了,目前找到的解决方案是,创建目录src/main/webapp/WEB-INF/lib/,将外置的jar放到这个目录下。
当然其它有引用的地方也需要相应修改下路径,修改maven-war-plugin的路径:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<webResource>
<directory>${pom.basedir}/src/main/webapp/WEB-INF/lib/</directory>
<targetPath>WEB-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</webResource>
</webResources>
</configuration>
</plugin>
不出意外的应该就可以正常的使用了,如果还不行的话,那么就再添加一个maven-compiler-plugin插件:
<!-- 设置javac编译器的版本和编码字符 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>utf8</encoding><!-- 编译器编码 -->
<compilerArguments>
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
在idea内启动tomcat,访问有外部jar调用的方法:
一切都是这么的美好。
至于为什么自己定义的/libs,不能被加载进来,这个问题目前还不清楚,有知道的可以留言告知下。
总结
总的来说,还是很简单的,主要是有些步骤不知道所以可能会采一些坑,但问题不大。
(1)下载外置Tomcat
(2)将Spring Boot项目配置以war的方式进行打包
(3)将外置的Tomcat添加到Idea中,然后将war添加到Tomcat容器。
(4)外置的jar不能识别的问题,就是将外置的jar放到一个固定的路径下,就能够被识别了。