美文网首页mavenMavenJava 杂谈
Maven Optional & Exclusions使

Maven Optional & Exclusions使

作者: Java技术栈 | 来源:发表于2018-01-05 17:08 被阅读122次

    Optional和Exclusions都是用来排除jar包依赖使用的,两者在使用上却是相反。

    Optional定义后,该依赖只能在本项目中传递,不会传递到引用该项目的父项目中,父项目需要主动引用该依赖才行。

    Exclusions则是主动排除子项目传递过来的依赖。

    用法区别

    Project-X -> Project-A
    Project-A -> Project-B

    <project>
      ...
      <dependencies>
        <dependency>
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
          <optional>true</optional>
        </dependency>
      </dependencies>
    </project>
    

    如上X依赖A,A依赖B用的<optional>true</optional>,这时B只能在A中使用,而不会主动传递到X中,X需要主动引用B才有B的依赖。

    如果A不用<optional>true</optional>引用B,则会传递到X中,X如果不需要B则需要主动排除A传递过来的B。

    <dependencies>
        <dependency>
          <groupId>sample.ProjectA</groupId>
          <artifactId>Project-A</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
          <exclusions>
            <exclusion>
              <groupId>sample.ProjectB</groupId>
              <artifactId>Project-B</artifactId>
            </exclusion>
          </exclusions> 
        </dependency>
    </dependencies>
    

    所以,Optional和Exclusions都是用来控制依赖的传递,可以根据实际场景灵活应用。

    更多具体的定义即说明可参考官方说明文档:

    http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
    号外:只要从此站过来关注下方微信公众号的,在公众号中回复MM,可以免费送干货:2TB架构师四阶段视频教程里面的资料。

    推荐阅读


    干货:2TB架构师四阶段视频教程

    年末干货!2017年度精选干货总结

    个人珍藏最全Spring Boot全套视频教程

    阿里高级Java面试题(首发,70道,带详细答案)

    2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案

    Spring面试题(70道,史上最全)

    分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。


    相关文章

      网友评论

        本文标题:Maven Optional & Exclusions使

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