您的位置:首页 > 其它

maven 相关名词术语总结

2015-09-18 16:26 513 查看
1、Maven坐标唯一标识一个依赖构件,它包含以下元素:

1)groupId:定义该Maven项目隶属的实际项目 *

2)artifactId:定义实际项目中的一个Maven项目(模块) *

3)version:定义Maven项目当前所属的版本 *

4)packaging:项目打包方式,包括:jar、war、pom等(可选,默认为jar)

5)classifier:帮助定义构建输出的一些附属构件,如该项目会通过使用一些插件生成如:javadoc.jar和java-sources.jar,它俩就是这两个附属构件的classifier,(不能直接定义,因为由附属插件生成)


2、propertyies: 定义一些属性供下面引用

例如:

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- spring版本号 -->
<spring.version>4.2.1.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependencies/>


3、dependency

1)groupId

2)artifactId

3)version

4)type:依赖的类型,对应于项目坐标定义的packaging(默认为Jar)

5)scope:依赖的范围

6)opetional:标记依赖是否可选

7)exclusions:用来排除传递性依赖


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

1)compile:编绎依赖范围,默认,三种classpath都有效,例如spring-core

2)test:测试依赖范围,只在测试classpath有效,例如junit

3)provided:已提供依赖范围,只在编绎和测试classpath有

效,例如servlet-api,因为运行时容器会提供

4)runtime:运行时依赖范围,只在测试和运行classpath有效,

例如jdbc驱动,因为编绎时只需要jdk的jdbc接口,在测

试和运行时才真正需要驱动

5)system:系统依赖范围,和provided一样,需要通过

systemPath元素显示地指定依赖位置,可以引用环境变

量,但是不推荐使用(往往与本地依赖绑定,移植性不好)

6)import:导入依赖范围,该依赖不会对三种classpath产生实

际的影响,通常和dependencyManagement结合使用


5、传递性依赖与传递性依赖范围:

定义:如果A项目依赖于B依赖,而B依赖又依赖于C依赖,那么当你在项目

A中导入B依赖时,maven会自动将C依赖导入

第一直接依赖的范围和第二直接依赖的范围决定了传递依赖的范围

如下图:最左边一行表示第一直接依赖范围,最上面一行表示第二直

接依赖范围,中间交叉部分表示传递依赖范围

![传递依赖](http://img.blog.csdn.net/20150918173626753)


6、依赖调解:当项目A有多个依赖路径时,原则是路径最近者优先,当

路径相等的情况下“第一声明者优先”

7、可选依赖:项目A依赖于项目B,项目B依赖于项目C和D,那么C和D

B对于C和D的依赖都是可选依赖,都不会传递给A,原因:C和D可能是互

斥的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: