maven-坐标与依赖
2018-08-26 17:19:29来源:博客园 阅读 ()
1、坐标-找到项目依赖的重要依据
<groupId>cmbc.com.cn</groupId> <artifactId>myapp</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>
说明:a、groupId、artifactId、version必须配置,packaging为可选配置,未配置则默认为jar
b、项目构件名称与坐标相对应,通常为artifactId-version.packaging,上述坐标对应构件名称为
myapp-1.0-SNAPSHOT
2、依赖配置
<project>
<dependencies> 可以包含多个<dependency>
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>...</type> 坐标类型,对应项目坐标定义的packaging
<scope>...</scope> 依赖范围
<optional>...</optional> 标记依赖是否可选
<exclusions> 排除传递性依赖
...
</exclusions>
</dependency>
</dependencies>
</project>
3、依赖详述
- 依赖范围
a、依赖范围种类
b、依赖范围的作用
Maven有编译、测试、运行classpath,依赖范围用于控制依赖与三种classpath的关系。
- 传递性依赖
a、项目A依赖于B,B依赖于C,则C是A的传递性依赖。Maven会将必要的间接依赖以传递式依赖的形式引入到项目。
b、确定传递性依赖范围
项目A依赖于B,B依赖于C,则B是A的第一直接依赖,C是B的第二直接依赖,C是A的传递性依赖。第一和第二直接依赖的范围决定了传递性依赖的范围,如下所示,左边为第一直接依赖范围,上面为第二直接依赖范围,中间为传递性依赖范围:
- 依赖调解
当项目多个直接依赖在其自己的依赖路径中分别依赖了同一个其它依赖,那么该引入哪一个路径上的依赖呢?
规则:不同路径长度,路径最短优先;相同路径长度,第一申明优先
- 可选依赖
假设A依赖于B,B依赖于C(可选),D(可选)(在B项目中的pom.xml文件依赖C和D,申明<dependency>中均添加<optional>true</optional>)。可选依赖不具备传递性,因此A项目中不能引入C或D的依赖,如果需要使用C或D需要在A项目中直接依赖C或D
- 排除依赖
传递性依赖会隐式的引入很多依赖,极大简化了项目依赖的管理。但在以下情形需要使用<exclusions>排除依赖:
a、A依赖B,B依赖C,C(快照版本)不稳定可能会影响项目A。此时需要排除C而引入C的稳定版本。
b、可能由于版权原因,C(稳定版本)不在中央仓库,而D项目是一个可替代的实现。此时需要排除C而引入D
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 你说研究过Spring里面的源码,循环依赖你会么? 2020-06-09
- IDEA下Maven的pom文件导入依赖出现Auto build completed wit 2020-06-07
- 解决IDEA Maven下载依赖包速度慢问题 2020-06-05
- Maven 依赖范围、传递、排除,你确定你都清楚吗? 2020-06-02
- Spring 基于自动装配的依赖注入详解 [自动装配模式搞不懂? 2020-05-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash