1.常见的Maven scope值
常见的Maven scope值 | 含义 | 使用场景 | 举例 | ||
编译 | 测试 | 运行 | |||
compile(默认) | ✅ | ✅ | ✅ | 适用于编译期间需要的依赖项(例如,项目的主要库) | <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> <scope>compile</scope> </dependency> |
provided | ✅ | ✅ | 🈲 | 适用于需要在编译期间使用,但最终部署时由外部环境提供的库(例如,Servlet API)。 | <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> |
runtime | 🈲 | ✅ | ✅ | 适用于仅在运行时需要的库(例如,JDBC驱动)。 | <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> <scope>runtime</scope> </dependency> |
test | 🈲 | 测试编译+测试运行✅ | 🈲 | 适用于仅在测试期间需要的库(例如,JUnit或Mockito) 不会打到包里 | <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> |
特殊的scope | 含义 | ||||
system | ✅ | ✅ | 🈲 | 类似于provided,但需要显式提供包含依赖项的JAR文件的路径,并且路径是系统相关的。 | <dependency> <groupId>com.example</groupId> <artifactId>example-library</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>system</scope> <systemPath>${project.basedir}/libs/example-library-1.0.0.jar</systemPath> </dependency> |
import | 专门用于导入依赖项管理的范围,通常用于导入BOM(Bill of Materials)文件。 | 适用于从其他POM文件导入依赖项版本管理(仅适用于 )。【想把别的依赖管理也依赖进来。】 | <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifictId>spring-boot-dependencies</artificatId> <version>2.5.4</version> <type>pom</type> <scope>import</scope> </denpendency> </dependencies> </dependencyManagement> |
2.compile
作用域表示依赖在所有阶段(编译、测试、运行时)都可用。它是 Maven 默认的依赖作用域
https://blog.csdn.net/yiguang_820/article/details/118214839
test
表示为当前依赖只参与测试阶段,打包之时,不会打到包里