【前言】一些依赖包,仅在特定的范围内会使用
【举例子】
- JUnit依赖,仅在test范围内使用;
- Mysql驱动包,仅在运行时使用(编译时使用的是JDBC的接口)
- servlet-api,java程序的运行时容器tomcat会提供,因此只在编译期间使用到servlet的依赖,我们需要限制其范围为provided 否则可能会和tomcat的servlet依赖产生冲突;
- …
所以Maven支持指定依赖的scope:
- compile:默认的scope,运行期有效,需要打入包中。
- provided:编译期有效,运行期不需要提供,不会打入包中。
- runtime:编译不需要,在运行期有效,需要导入包中。(接口与实现分离)
- test:测试需要,不会打入包中。