zoukankan      html  css  js  c++  java
  • 坐标和依赖

    坐标:

      为了标识 Java 构件世界中的某个构件

      groupId:项目,一般是公司或组织

      artifactId:模块,推荐使用项目名作为前缀,如 spring-core,spring-bean 等

      version:版本

      packaging:打包方式,默认为 jar

      classifier:帮助定义构建输出的一些附属构件。一般很少用到这个

    举例:

    1     <dependencies>
    2         <dependency>
    3             <groupId>junit</groupId>
    4             <artifactId>junit</artifactId>
    5             <version>4.12</version>
    6             <scope>test</scope>
    7         </dependency>
    8     </dependencies>

    依赖的配置

      以上几个元素,可以标识一个构件在 Java 世界中的位置,那么具体如何被依赖使用呢?

      type:对应于 packaging,一般为 jar

      scope:依赖的范围

      optional:依赖是否可选

      exclusions:排除传递性依赖

    依赖范围

      依赖范围用来控制依赖与三种 classpath 的关系:编译 classpath、测试 classpath、运行 classpath

      compile:编译依赖范围,默认依赖范围。对于编译、测试、运行三种 classpath 都有效。如:spring-core

      test:测试依赖范围。只在测试 classpath 有效。如:junit

      provided:已提供依赖范围,编译和测试有效,运行时无效。如:servlet-api。运行的时候由容器提供

      runtime:运行时依赖范围,测试和运行时有效,编译时无效。如:JDBC 驱动的实现

      system:系统依赖范围

      import:导入依赖范围

    依赖的传递性

      项目依赖 A,A 依赖 B。那么在使用 Maven 引入 A 的时候,A 会自动将其依赖的 B 也引入

    依赖调节

      同一个构件可能被多个依赖所依赖,这个时候使用哪个构件?

      

      第一原则:路径短的优先

      第二原则:先声明的优先

    可选依赖

      项目 A 依赖于 B,那么在构件的世界里,如果一个项目引入了 A,那么同时也会引入 B,如果不想 B 被引入怎么办?就需要将 B 设置为一个可选的依赖

      就是添加了一个 optional 属性

    排除依赖

      项目 A 依赖项目 B,如果我们要引入 A 而又不想通过依赖传递引入 B,那么可以使用排除依赖

      

     1         <dependency>
     2             <groupId>junit</groupId>
     3             <artifactId>junit</artifactId>
     4             <version>${junit.version}</version>
     5             <scope>test</scope>
     6             <exclusions>
     7                 <exclusion>
     8                     <groupId></groupId>
     9                     <artifactId></artifactId>
    10                 </exclusion>
    11             </exclusions>
    12         </dependency>
  • 相关阅读:
    程序员开发过程常见问题的解决方法(持续更新中....)
    android 单元测试
    浅谈android binder机制
    Android 写模块化代码注意事项
    Android View 简析
    PackageManager源码分析
    Android N做了啥
    JAVA HTTP POST参数为一个对象或数组
    Spring+Jetty+Jersey+Mybatis整合教程 无web.xml 、webapp版
    IKAnalyzer 添加扩展词库和自定义词
  • 原文地址:https://www.cnblogs.com/sherrykid/p/5907282.html
Copyright © 2011-2022 走看看