maven依赖基础
一个简单的依赖
<dependency>
<groupId>com.alibaba.share</groupId>
<artifactId>test</artifactId>
<version>1.4</version>
</dependency>
依赖库命名规则:
${groupId.part1}/${groupId.part2}/${version}
例:com/alibaba/share/1.4
依赖库文件命名规则:
${artifactId}-${version}-${classifier}.${type}
例:test-1.4-source.jar
注:classfier即分类器,多数的时候是用不到的,不过有写情况需要,例:
TestNG强制需要你提供分类器,以区别jdk14和jdk15
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>5.7</version>
<classifier>jdk15</classifier>
</dependency>
maven依赖范围
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
上面的scope即约定依赖范围。
compile:默认值,一直可用,最后会被打包
provided:编译期间可用,不会被传递依赖,不会被打包。例:依赖于web容器中的提供的一个jar包,在编译的时候需要加入依赖(web容器还没有介入),运行的时候由web容器来提供。
test:执行单元测试时可用,不会被打包,不会被传递依赖
runtime:运行和测试时需要,但编译时不需要
system:不推荐使用
maven依赖管理
避免不同子模块中依赖版本冲突
在主pom中配置依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.2</version>
</dependency>
...
<dependencies>
</dependencyManagement>
在子pom中添加依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
dependencyManagement实际上不会真正引入任何依赖,在子pom中添加之后才会。在父pom中配置了之后,子模块只需使用简单groupId和artifactId就能自动继承相应的父模块依赖配置。如果子pom中定义了version,则覆盖management中的。
可选依赖
添加不可传递的依赖:
在一个项目中加入依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>1.5</version>
<optional>true</optional>
</dependency>
在另一个项目依赖于上一个项目,但是如果需要用到mysql的依赖,仍然需要去添加。
依赖版本界限
要求的依赖版本>=3.8且<4.0
<version>[3.8,4.0)</version>
要求的依赖版本<=3.8.1
<version>[,3.8.1]</version>
要求必须是3.8.1版本,如果不是的话会构建失败,提示版本冲突。原来的写法<version>3.8.1</version>的意思是所有版本都可以,但最好是3.8.1
<version>[3.8.1]</version>
排除依赖
依赖project-a但是排除掉对project-a中引入的project-b的依赖
<dependency>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-a</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-b</artifactId>
</exclusion>
</exclusions>
</dependency>
替换依赖
直接使用上一步中的排除掉,然后添加要替换进来的依赖就可以了,没有什么特殊的标志来标志这个是替换进来的。
版本冲突仲裁
版本仲裁规则(在maven 2.2.1版本上测试验证)
• 按照项目总POM的DependencyManager版本声明进行仲裁(覆盖),但无警告。
• 如无仲裁声明,则按照依赖最短路径确定版本。
• 若相同路径,有严格区间限定的版本优先。
• 若相同路径,无版本区间,则按照先入为主原则。
分享到:
相关推荐
Maven依赖管理项目构建工具
Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与,节约了我们大量的时间和精力。用实际例子来说明就是:通过Maven导入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar会被...
Maven依赖管理项目构建工具(保姆级教学)
Maven依赖管理 Maven自动化部署 Maven Web应用 Eclispe IDE集成Maven NetBeans IDE集成Maven Eclipse构建Maven项目 转换基于Maven的Java项目支持Eclipse IDE 转换基于Maven的Web应用程序支持Eclipse IDE 使用Maven...
基于ACTIVITI引擎进行开发,利用maven进行依赖管理,本文件列出来具体的依赖项
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1...
前后端项目启动教程课程,配套后端Maven依赖包,适用于SpringBoot3.1版本,用于 https://blog.csdn.net/qq_41464123?type=download 系列项目...在Maven中,我们可以使用依赖管理器来管理项目所需的外部JAR包或库文件。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和...
基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip ...
Maven入门开发指南,全面介绍Maven依赖管理工具的使用
JSONObject对象相关的jar包依赖,一共有6个;还有maven环境下管理的jar包
3.5.5. Maven依赖管理 (Dependency Management) .............. 36 3.5.6. 站点生成和报告 (Site Generation and Reporting) ...... 38 3.6. 小结 ..................................................... 38 4. ...
本插件参考58开源插件MavenManager,采用dependencyManagement方式,一键解决Java开发过程中使用maven作为依赖管理时的jar包依赖冲突问题,相比MavenHelper更加省时省力,jar包版本采用最新版本号原则
这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。 Apache Ant:基于XML的构建...Gradle:使用Groovy(非XML)进行增量构建,可以很好地与Maven依赖管理配合工作。 字节码操作 编程方式操作字节码的开发库。
Maven 是一个项目管理和构建自动化工具,Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
依赖关系管理和命名约定 Spring依赖和依靠弹簧 Maven依赖管理 艾薇依赖管理 1.3.2。 日志 不使用通用日志 使用SLF4J 使用Log4j 二世。 什么是新的在春季3 2。 新特性和增强功能在Spring框架3.0 2.1。 Java 5 2.2。 ...
eclipse和Myeclipse项目开发中,maven项目管理依赖配置包