美文网首页
maven用法之Scope、Optional

maven用法之Scope、Optional

作者: jeffrey_hjf | 来源:发表于2022-01-25 11:05 被阅读0次

Scope

Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用的是JDBC接口),而是在运行时用到的;还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已。
总结来说:
compile:默认的scope,运行期有效,需要打入包中。
provided:编译期有效,运行期不需要提供,不会打入包中。
runtime:编译不需要,在运行期有效,需要导入包中。(接口与实现分离)
test:测试需要,不会打入包中。
system:非本地仓库引入、存在系统的某个路径下的jar。(一般不使用)

Optional

<project>
  ...
  <dependencies>
    <!-- declare the dependency to be set as optional -->
    <dependency>
      <groupId>sample.ProjectB</groupId>
      <artifactId>Project-B</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <optional>true</optional> <!-- value will be true or false only -->
    </dependency>
  </dependencies>
</project>

依赖关系:
Project-A --> Project-B; Project-B --> Project-C 
项目A依赖项目B,而项目B同时依赖项目C;
 
B中引入C使用了 <optional>true</optional>;那样项目A中将不会引入项目C;

相关文章

  • maven用法之Scope、Optional

    Scope Optional

  • Maven依赖Scope标签用法

    pom文件依赖问题 在一个maven项目中,如果存在编译需要而发布不需要的jar包,可以用scope标签,值设为p...

  • Maven中scope=provided和optional=tr

    最近不知道写啥了,先从大佬那里抄一篇文章发上来吧。 先说效果,maven依赖声明中加了 provided ,或者加...

  • Maven中scope=provided和optional=tr

    先说效果,maven依赖声明中加了 provided ,或者加了 true ,从效果上看是一样的,都会中断依赖传递...

  • Maven Scope 作用说明

    Scope Maven中的scope有compile、test、runtime、provided、system,其...

  • 第十七章 $scope用法

    一、$scope用法

  • 15分钟Maven

    Maven Scope provided - Dependencies that are required for...

  • maven scope

    compile默认就是compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期...

  • maven scope

    compile,缺省值,适用于所有阶段,会随着项目一起发布。compile is the default scop...

  • Maven scope

    说在最前面:理解事物需要看清它的边界。 dependency中的scope是用来指定依赖包的使用范围。 那么依赖包...

网友评论

      本文标题:maven用法之Scope、Optional

      本文链接:https://www.haomeiwen.com/subject/vzkwhrtx.html