maven optional

什么是optional

optional是maven依赖jar时的一个选项,表示该依赖是可选的,不会被依赖传递。

<optional>true</optional>

为什么要使用optional

  • 减少不必要的依赖传递
  • 减少jar包冲突

使用场景

A项目的pom中依赖了system-local-api

<dependency>
     <groupId>com.sinosoft</groupId>
     <artifactId>system-local-api</artifactId>
     <version>1.0.0</version>
</dependency>

B项目依赖了A项目
因为maven有依赖传递机制,那么B项目就会有system-local-api的jar包,实际上在B项目中不一定要使用system-local-api,那么我们项目中就会有多余的依赖,
当这种情况时越来越多时,最后整个项目的jar包就有很多的多余依赖,导致项目很臃肿。此时可以设置optional为true,就不会传递给B项目。

<dependency>
  	<groupId>com.sinosoft</groupId>
    <artifactId>system-local-api</artifactId>
    <version>1.0.0</version>
    <optional>true</optional>
</dependency>

总结

当你开发的组件时,有一个功能,有多种实现方式的jar可以提供,但是实际只会使用一种的情况下。可以把实现的jar包设置成:true。
即依赖时可以自行选择需要什么功能,只提供项目需要的jar,而不是默认全部都给你。

你可能感兴趣的:(maven,java,前端)