Maven——使用技巧optional
什么是optional
optional是maven依赖jar时的一个选项,表示该依赖是可选的,不会被依赖传递。
<optional>true</optional>
为什么要使用optional
- 减少不必要的依赖传递
- 减少jar包冲突
使用场景
以项目中使用到的消息队列依赖为例。
例如:
- B依赖了消息队列:spring-rabbit
- 这时候的依赖关系如下 A->B
因为maven有依赖传递机制,那么A项目就会有spring-rabbit的jar包,实际上在A项目中不一定要使用spring-rabbit,那么我们项目中就会有多余的依赖,
当这种情况时越来越多时,最后整个项目的jar包就有很多的多余依赖,导致项目很臃肿。
如何优化
只要B项目中把spring-rabbit
设置成:<optional>true</optional>
例如:
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<optional>true</optional>
</dependency>
总结
当你开发的组件时,有一个功能,有多种实现方式的jar可以提供,但是实际只会使用一种的情况下。可以把实现的jar包设置成:
<optional>true</optional>。
表示:瞧,你依赖我时,用到这个功能时,可以自行选择,而不是默认全部都给你,管你用不用。