在 Maven 的 `pom.xml` 文件中,`<scope>` 标签用于定义依赖项的作用域。作用域决定了依赖项的生命周期、可见性和使用范围。`<scope>` 标签的常用值包括:
 1. **compile**(默认值):编译依赖在所有 classpath 中都可用,同时也会被传递到依赖的项目中。适用于编译、测试和运行时。
 2. **provided**:编译和测试时需要这个依赖,但在运行时由 JDK 或者容器来提供。例如,Servlet API 在编译和测试时需要,但在运行时由 Servlet 容器提供。
 3. **runtime**:在运行和测试系统时需要,但在编译时不需要。例如,JDBC 驱动实现仅在运行时需要。
 4. **test**:仅在测试时需要,用于编译和运行测试代码。不会随项目发布。
 5. **system**:与 `provided` 类似,但是你必须显式提供一个对于本地系统中 JAR 文件的路径。这么做是为了允许基于本地路径的依赖,但是不推荐使用。
 6. **import**(Maven 2.0.9 之后可用):用于 `dependencyManagement` 中,它将指定的 POM 文件中的依赖管理信息导入并合并到当前 POM 文件中。
 使用示例:
 ```xml
 <dependencies>
     <!-- compile scope -->
     <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>4.0.1</version>
         <scope>compile</scope>
     </dependency>
     <!-- provided scope -->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>5.3.10</version>
         <scope>provided</scope>
     </dependency>
     <!-- runtime scope -->
     <dependency>
         <groupId>com.h2database</groupId>
         <artifactId>h2</artifactId>
         <version>1.4.200</version>
         <scope>runtime</scope>
     </dependency>
     <!-- test scope -->
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.13.2</version>
         <scope>test</scope>
     </dependency>
 </dependencies>
 ```
 在实际使用中,正确选择依赖的作用域可以提高项目的可维护性,避免不必要的依赖传递,减少潜在的版本冲突,并优化构建过程。