maven
常见依赖声明
关键词 | 作用 | 特点 | 适用场景 |
---|---|---|---|
compile | 默认范围,用于编译和运行时都需要的依赖。 | - 如果未指定 <scope> ,默认为 compile 。- 依赖会传递到其他模块中。 | 核心库,如日志框架(SLF4J)、通用工具类库等。 |
provided | 编译期需要,但运行时由外部环境(如服务器)提供。 | - 编译时有效,运行时不打包到最终应用中。 - 不会传递到其他模块中。 | 由容器或环境提供的库,如 Servlet API、Java EE 等。 |
runtime | 运行时需要,但编译期不需要。 | - 不用于编译时,但会加入到运行时类路径。 | 数据库驱动(如 JDBC 驱动)等运行时加载的类。 |
test | 仅用于测试编译和运行,不会影响生产代码。 | - 不会传递到其他模块中。 | 单元测试框架(如 JUnit、Mockito 等)。 |
system | 类似 provided ,但需要显式指定依赖的本地路径。 | - 不会从远程仓库下载,依赖由 <systemPath> 指定。- 不推荐使用。 | 使用本地的 JAR 文件,特别是在远程仓库无此依赖时。 |
import | 导入依赖集合(通常为 BOM 文件),不会直接加入类路径,仅用于版本管理。 | - 仅在 <dependencyManagement> 中使用。- 常用于管理多模块项目中的版本一致性。 | Spring Boot 中 spring-boot-dependencies 的 BOM 管理等。 |