maven依赖作用域
目录
在Maven依赖作用域(scope)定义了依赖在项目生命周期的不同阶段以及不同配置中的可用性。常见的作用域有compile、provided、runtime、test、import、system。
依赖作用域简介
- COMPILE(编译)
- 描述:这是默认的作用域。在编译、测试和运行项目时都会使用这些依赖。
- 典型用途:在项目的编译类路径中需要的依赖,例如,用于编写和编译应用程序代码的库。
- PROVIDED(已提供)
- 描述:在编译和测试项目时使用这些依赖,但在运行时不使用。它们通常由JDK或容器在运行时提供。
- 典型用途:例如,Servlet API和JSP API这类的依赖,在编译和测试时需要它们,但在运行时容器(如Tomcat)已提供。
- RUNTIME(运行时)
- 描述:在运行和测试系统时需要这些依赖,但在编译主代码时不需要。
- 典型用途:例如,JDBC驱动,它们在编译时不需要,但在运行时是必需的。
- TEST(测试)
- 描述:只在编译和运行测试时使用这些依赖。
- 典型用途:例如,JUnit,它们只在编写和执行测试时需要。
- IMPORT(导入)
- 仅用于dependencyManagement部分:这个作用域不是用来限制依赖的使用,而是用来在一个项目的dependencyManagement部分导入其他项目的dependencyManagement部分。
- 典型用途:在一个多模块项目中,可以通过import作用域来确保所有模块都使用相同版本的依赖。
- SYSTEM(系统)
- 描述:与provided相似,但是您必须手动提供并指定JAR文件的路径。这些依赖不从Maven仓库中解析。
- 典型用途:当依赖项不在Maven仓库中且不打算部署到任何仓库时使用,例如某些专有的或受限的JAR。
总结来说,每个作用域都定义了依赖在项目生命周期的不同阶段的可见性和使用方式。选择合适的作用域可以帮助您更好地管理项目的依赖,确保只在需要时引入特定的依赖,从而减少项目的大小和复杂性。