maven配置<scope>provided</scope> 和<optional>true</optional>

maven背景

Maven 中的依赖是有传递(Transitive)性的,默认会包含传递的依赖,这样就不用手动引用每一个依赖了.
由于传递依赖,因为多个传递下同一个jar包的版本不同,很可能会有包冲突等一系列问题。
解决这个依赖传递导致的冲突问题,有两种方案:

  1. 在使用者,也就是发起依赖方进行排除
    <exclusions></exclusions>
  2. 在提供方,将依赖的范围定义为不传递
    <scope>provided</scope> 和<optional>true</optional>就是在提供方配置不传递的标签

optional 可选的

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
</dependency>

可以理解为此功能/此依赖可选,如果不需要某项功能,可以不引用这个包

scope provided 提供的

<dependency>
      <groupId>org.apache.submarine</groupId>
      <artifactId>server-api</artifactId>
      <scope>provided</scope>
</dependency>

可以理解为此包不由我直接提供 需要调用者/容器提供

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容