pom-scope-optional标签

2022-04-01  本文已影响0人  君子兰琚琚

一、<scope>标签:

  mavne工程A,引入依赖B。<scope>标签:设置B的作用范围,一个有如下几个作用范围:

1. compile

默认值,表示依赖要参与编译、测试、运行,打包时要包含进去

2. test

依赖仅参与测试相关工作,包括测试代码的编译和执行,不会被打包,例如:junit

3. runtime

依赖不参加编译,但参与测试、运行。与compile相比,跳过编译。例如JDBC驱动,适用运行和测试阶段

4. provided

相当于compile,但不参与打包

5. system

从参与度说和provided相同,但依赖不会从中央库下载,从本地文拿,需添加systemPath属性定义路径

注:scope依赖传递

为:test、provided时,表示该依赖不传递,例如:

<dependency>
        <groupId>a.b</groupId>
        <artifactId>spring-boot-xo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope>
<!-- test/provided表示spring-boot-x0不传递,只应用于当前工程-->
</dependency>

二、<optional>标签

  控制被它修饰的依赖是否可传递--- true不可传递,false可传递。它和scope决策权相等,可相互否定。
例1:

<dependency>
    <groupId>a.b</groupId>
    <artifactId>cX01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>compile</scope><!--默认compile,可传递-->
    <optional>false</optional><!--默认false,可传递-->
    <!-- 本例中:scope & optional 都同意依赖传递,cX01可传递 -->
</dependency>

例2:

<dependency>
    <groupId>a.b</groupId>
    <artifactId>cX01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>compile</scope><!--默认compile,可传递-->
    <optional>true</optional><!--true,不可传递-->
    <!-- 本例中:scope可传递 & optional不可传递,cX01不可传递 -->
</dependency>

例3:

<!-- 感觉一般也没人这么写,只是举例 -->
<dependency>
    <groupId>a.b</groupId>
    <artifactId>cX01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>provided</scope><!--provided,不可传递-->
    <optional>false</optional><!--false,可传递-->
    <!-- 本例中:scope不可传递 & optional可传递,cX01不可传递 -->
</dependency>
上一篇 下一篇

猜你喜欢

热点阅读