maven中pom.xml 文件 的Scope和optional作用

*Dependency
在这里插入图片描述

  1, **<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:** 
    * compile,缺省值,适用于所有阶段,会随着项目一起发布。 
    * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
    * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
    * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
    * system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

2,optional
当模块A有下面依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
</dependency>

当模块B依赖模块A时,如果不写optional会进行依赖传递,
当optional为true是,这个依赖项不会传递到B
当设置为fasle的时候,这个依赖项会传递到B

这可能在依赖冲突时

猜你喜欢

转载自blog.csdn.net/weixin_44975322/article/details/121139197