Maven中optional和scope
optional 将依赖项设为可选,这样依赖该项目的项目,不会引入该依赖,减少依赖传递,减小jar和war体积,默认值为 false
常见的有 spring-boot-devtools 热部署,junit 单元测试
<!--devtools 热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <optional>true</optional> </dependency>
scope 元素主要用来控制依赖的使用范围
scope取值 | 范围 | 含义 | 依赖传递 | 例子 |
compile | 编译、运行、测试时均有效 | 默认值 | 是 | spring-core等核心jar包 |
provided | 编译、测试时有效 | 不会被打包 | 否 |
spring-boot-devtools(生产不要热部署) servlet-api(容器已提供,无需引入) |
runtime | 运行、测试时有效 | 是 | JDBC驱动,如mysql-connector | |
test | 测试时有效 | 不会被打包 | 否 | JUnit |
system | 编译、测试时有效 | 从本地文件系统引入,不从maven引入,不推荐 | 是 |