maven 相关名词术语总结
2015-09-18 16:26
513 查看
1、Maven坐标唯一标识一个依赖构件,它包含以下元素:
2、propertyies: 定义一些属性供下面引用
例如:
3、dependency
4、依赖范围:用来控制依赖与三种classpath的关系(编绎、测试、运行)
5、传递性依赖与传递性依赖范围:
6、依赖调解:当项目A有多个依赖路径时,原则是路径最近者优先,当
路径相等的情况下“第一声明者优先”
7、可选依赖:项目A依赖于项目B,项目B依赖于项目C和D,那么C和D
B对于C和D的依赖都是可选依赖,都不会传递给A,原因:C和D可能是互
斥的
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可能是互
斥的
相关文章推荐
- SHELL编程基本知识点
- 关于oracle 安装结束后的ORA-12560: TNS: 协议适配器错误的解决方法
- Java的File.separator
- Cocos2d-js开发小技巧
- 30. Resolving Conflicts
- Touch事件分发机制
- IOS 第三方库介绍
- Ember.js 入门指南——番外篇,路由、模板的执行、渲染顺序
- 利用IP安全策略关闭危险端口
- swig C#链接c++ dll
- 修改UG8.0工作区背景图片的方法
- MVC学习笔记---MVC框架执行顺序
- js,jquery常用法
- Entity Framework映射的总结
- oracle某张表size暴涨问题分析处理
- 类cisco的命令行处理器
- Android开发之SurfaceView详解
- 我的DUILIB常用库
- linux使用第三方lib文件
- 我的Linux主机操作记录续