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 的依赖-查明测试运行是否使用。-->