Maven 坐标和依赖

Maven 坐标的元素包括  groupId,artifactId,version,packaging,classifier。这些一块儿共同肯定了 一个java构件的惟一标识。任何一个构件必须明肯定义本身的坐标。java

Maven 内置中央仓库地址 http://repol.maven.org/maven2spring

nexus-indexer是一个对maven仓库编撰索引并提供搜索功能的类库,是 nexus项目的一个子模块。api

坐标元素 含义 是否必须
groupId 定义当前Maven项目隶属于的实际项目 必须
artifactId 定义实际项目中的一个Maven项目(模块),建议以实际项目名作前缀。 必须
version 定义Maven项目当前所处的版本。 必须
packaging 定义Maven项目的打包方式。如 jar,war。默认值 jar。不一样打包方式影响构建的生命周期。 可选
classifier 定义构建输出的一些附属构件。如 javadoc,sources。注意:不能直接定义项目的classifier,其不是项目直接默认生成,而是由附加的插件帮助生成的。 不能直接定义

项目构件的文件名与坐标相对应,通常规则为 artifactId-version[-classifier].packaging,[-classifier]表示可选bash

依赖配置:maven

<dependencies>
   <dependency>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>...</version>
      <type>...</type>
      <scope>...</scope>
      <optional>...</optional>
      <exclusions>
         <exclusion>
          ...
         </exclusion>
         ...
      </exclusions>
   </dependency>
   ...
</dependencies>

groupId,artifactId,version :依赖的基本坐标,对于任何一个依赖来讲,基本坐标是最重要的。ide

type:依赖的类型,对应于项目坐标定义的packaging。大部分状况下,该元素没必要声明,其默认是jar测试

scope:依赖的范围spa

optional:标记依赖是否可选。插件

exclusions:用来排除传递性依赖。code

大部分依赖声明只包含基本坐标。不是一些状况下,其余元素也很重要。

Scope 主要针对 编译,测试,运行 三种状况

依赖范围(scope) 编译有效 测试有效 运行有效 例子
compile(编译依赖) spring-core
test(测试依赖) Junit
provided(已提供依赖) servlet-api
runtime(运行时依赖) jdbc驱动
system(系统依赖) 本地的maven外的类库文件
import(导入依赖)        

import:只有在 dependencyManagement中有效,做用是将目标的pom中的 denpendencyManagement配置导入到 当前的pom的denpendencyManagement元素中

传递性依赖和依赖范围

A依赖B,B依赖C。A对于B是第一直接依赖,B对于C 是第二直接依赖

左边第一直接依赖,上面第二直接依赖

 第一依赖\第二依赖 compile test provided runtime
compile compile - - runtime
test test - - test
provided provided - provided provided
runtime runtime - - runtime

依赖调解:第一原则:路径最近者优先。2.09版本后,第二原则:顺序最靠前的那个依赖优先。

可选依赖 optional 为 true 时,该依赖不传递。

排除依赖:exclusions能够包含多个 exclusion 子元素,排除依赖,声明exclusion只须要 groupId和artifactId,不须要 version。

归类依赖:properties 元素定义 Maven 属性 ,可使用 ${变量名} 的方式引用 Maven 属性-常量。

<properties>
    <springframework.version>***</springframework.version>
</properties>

经常使用 依赖相关 命令

若是命令不成功,根据相关提示,引入插件

mvn dependency:list   <!--查询全部依赖列表-->
mvn dependency:tree   <!--查询全部依赖,以树形结构-->
mvn dependency:analyze <!--分析目前依赖使用状况--主要针对编译依赖。 
                            引入:Used undeclared denpendencise 的依赖
                            分析:Unsed declared denpendencise 的依赖-查明测试运行是否使用。-->
相关文章
相关标签/搜索