为什么 Tomcat 不写在 Maven 依赖里?
文章目录
- 为什么 Tomcat 不写在 Maven 依赖里
- 1. 依赖 vs 插件:核心区别
- 2. 为什么用 Tomcat 插件?
- 3. 什么时候会把 Tomcat 写在依赖里?
- 总结
为什么 Tomcat 不写在 Maven 依赖里
在 Maven 项目中,Tomcat 不写在<dependencies>里,而是通过Maven Tomcat 插件(tomcat7-maven-plugin)来配置,这是因为两者的作用和使用场景完全不同:
1. 依赖 vs 插件:核心区别
- 依赖(
<dependencies>):是项目运行时需要的类库,比如 Jackson、Spring 等,它们会被打包到最终的 WAR/JAR 包中,随项目一起部署。 - 插件(
<build><plugins>):是构建和运行项目时使用的工具,只在 Maven 构建阶段生效,不会被打包到项目中。
Tomcat 是一个Web 服务器,它的作用是运行你的项目,而不是项目本身的一部分,所以它属于构建工具,应该配置在插件里,而不是依赖里。
2. 为什么用 Tomcat 插件?
在传统 SSM 项目中,使用 Tomcat 插件有几个好处:
- 无需独立安装 Tomcat:插件会自动下载并内嵌一个 Tomcat 服务器,你只需要执行启动命令,就能直接启动项目,省去了下载、安装和配置独立 Tomcat 的步骤。
- 热部署方便:修改代码后可以快速重启或热加载,提升开发效率。
- 配置灵活:可以在插件的配置标签里直接指定端口、上下文路径等。
3. 什么时候会把 Tomcat 写在依赖里?
只有一种情况会在<dependencies>里出现 Tomcat 相关依赖,那就是当你需要在项目中使用 Tomcat 提供的某些 API(比如 Servlet API)时。但即使如此,通常也会将其作用域设置为provided,表示这个依赖由运行时的服务器提供,不需要打包进项目。
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>总结
- Tomcat 是运行项目的服务器,不是项目的依赖,所以配置在
<build><plugins>中。 - Jackson 等类库是项目运行需要的类库,所以配置在
<dependencies>中。 - 使用 Tomcat 插件可以让你在开发时快速启动项目,实现“开箱即用”。
