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引入,不推荐  
posted @ 2023-07-12 09:50  全玉  阅读(120)  评论(0编辑  收藏  举报