Maven中optional标签与scope标签
应用场景
只想在运行时环境或开发环境中包含某个依赖项,而不是将其包含在最终的发布包中,例如:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<scope>compile</scope>
<optional>true</optional>
</dependency>
scope标签
用于定义依赖项的作用范围,即该依赖项在哪些类路径下有效。Maven提供了几种预定义的依赖范围,如compile、runtime、test等。这些范围定义了依赖项在哪些类路径下可用,以及它们是否包含在最终的发布包中。
- compile:默认值,依赖项在编译、测试和运行时都可用,并且包含在最终的发布包中。
- runtime:依赖项在测试和运行时可用。它不会被包含在最终的发布包中
- test:依赖项仅在测试时可用,并且不会被包含在最终的发布包中
- provided:依赖项在编译和测试时可用,运行时由目标环境提供(例如,Servlet API由Servlet容器提供),因此不会被包含在最终的发布包中。
- system:类似于 provided,但需要显式提供路径。
- import:只在 dependencyManagement 中使用,表示导入依赖的管理信息而不实际引入依赖。
optional标签
将依赖设置为true不仅代表着依赖不会传递,就连打包的时候都不会将该jar打包进去,一旦使用到调用该jar包的方法就会异常。 在依赖项的dependency元素内部添加optional元素,并设置其值为true