Maven(三)坐标与依赖

Maven的一大功能就是管理项目依赖,为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就是依赖管理的底层基础--坐标。下面我们就详细介绍一下Maven里的坐标。

这里的坐标,显示方式和大家熟悉的平面几何中的坐标(x,y)不一样,但是含义是一致的,这也说明了没有新知识,只有不同知识间的相互转化。可以说,任何一个坐标,不管是平面几何中,也可以是一个地址,都是能够唯一标识该平面中的一点。

相对于平面中的点和城市中的地址,Maven的世界里拥有数量非常巨大的构建,也就是平常使用的jar、war等文件。现在假使没有坐标概念的引入,我们就需要在不同的网站上下载不同的jar包。例如,当需要引入SpringFramework依赖的时候,我们需要去Spring
Framework网站寻找并下载,当需要使用log4j依赖的时候,我们又回去Apache网站寻找,这样可想而知,我们需要花费大量的时间在搜索、浏览网页等工作上面。

没有统一的规范,统一的法则,下载依赖的功能就无法实现自动化。为了解决这个问题,Maven定义了这样一组规范:坐标。坐标的元素主要有:groupId,artifactId,version,packaging,classifier。一个完整的坐标就可以唯一的确定一个依赖包,只要我们提供正确的坐标元素,Maven就可以从仓库中找到对应的构件供我们使用了。

来看一组坐标定义吧:

     <groupId>com.google.code.gson</groupId>

     <artifactId>gson</artifactId>

     <version>2.3.1</version>

     <packaging>jar</packaging>

Gson 是 Google 提供的用来在Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

通过上述坐标定义,大概介绍一下关于坐标各个元素:groupId:定义当前Maven项目隶属的实际项目。而artifactId则是指实际项目中的一个Maven项目(模块)。version顾名思义,就是定义Maven项目当前所处的版本。packaging则是定义了Maven项目的打包方式。

了解了坐标的定义后,再来看看依赖吧。在pom文件中的依赖配置是由根元素project下的dependencies配置的。

       <dependencies>

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.3.1</version>
			<packaging>jar</packaging>
		</dependency>

		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>itoo-base</artifactId>
			<version>${itoo-base.version}</version>
		</dependency>
	</dependencies>

说到依赖,不得不说说传递性依赖。什么是传递性依赖呢?举例来说吧:如果不使用Maven,我们手动下载需要的Spring
Framework依赖时,由于Spring Framework又会依赖于其他开源类库,因为实际中我们往往还需要下载这些包,这么做就往往引入了很多不必要的依赖。

而Maven的传递性依赖机制就很好的解决了这个问题。它的坐标元素<scope>就定义了依赖的范围(compile,test,provided,runtime,system等)。上述依赖例子中没有声明依赖范围,那么其依赖范围就是默认的compile。有了传递性依赖机制,在使用Spring
Framework的时候就不用去考虑它依赖了什么,也不用担心引入多余的依赖。Maven会解析各个直接依赖的pom,将那些必要的间接依赖,以传递性依赖的形式引入到当前的项目中。

本篇文章主要介绍了Maven的两个核心概念:坐标与依赖。不知道大家了解了吗?

时间: 2024-08-29 23:15:30

Maven(三)坐标与依赖的相关文章

maven(5)坐标和依赖

[0]README 1)本文部分文字转自 "maven实战",旨在 review  "maven(5)坐标和依赖" 的相关知识: [2]坐标详解  1)intro:坐标用于定位 类库,而一组maven 坐标通过一些元素来进行定义的:groupId, artifactId,version, packaging, classifier: 对以上元素的分析(Analysis): A1)groupId:定义当前 maven 项目隶属的实际项目:maven 项目和 实际项目不

Maven之——坐标和依赖(上)

Maven之--坐标和依赖(上) 1.    Maven坐标概念 Maven通过构件的坐标来在Maven仓库中定位到详细的构件.Maven的坐标元素包含groupId.artifactId.versiion.packaging.classifier.Maven内置了一个中央仓库地址.须要时Maven会依据坐标到当中下载.详细关于中央仓库的介绍在后面. 2.    Maven坐标具体解释 比方以下一组坐标: <groupId>org.andy.items</groupId> <

Maven(2)-坐标和依赖

本文简要介绍Maven里面的坐标(coodinate)以及maven依赖管理(Dependency) 一.坐标 先来个截图: 在上图peoject栏目有groupId,artifactId,version,这个就是maven中坐标的概念,这三个属性能够唯一定位一个java架包,其中: groupId代表架包所在的组织(package的概念),比如com.cnblogs artifactId是一个单独架包(项目)的唯一表示 version代表当前项目的版本号 另外坐标还有个packaging属性,

Hello Maven 2 - 坐标和依赖

Maven的坐标元素有groupId,artifactId,version,packaging,classifier文件名和坐标相对应artifactId-version [-classifier] .packaging 依赖可声明的属性groupIdartifactIdversiontypescope    compile - 默认的依赖范围,对编译.测试.运行三种classpath都有效    test - 测试依赖范围,只对测试classpath有效    runtime - 与测试和运行

【Maven】---坐标与依赖

Maven坐标与依赖 最近想深度学习下maven,找到一本书叫<Maven实战>,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在差距, 没关系,如果有时间和精力我也会阅读官方文档,看看到底有哪些变换. 一.坐标详解 1.何为Maven坐标 maven定义了这样一组规则:世界上任何一个构件都可以使用maven坐标唯一标识,坐标元素包括:groupId.artifactId.version.packaging.classifier.只要提

Maven添加坐标(依赖)及在Eclipse中的操作

例如:添加一个spring-test.jar的依赖过程,普遍的做法就是直接操作pom.xml文件. 1.打开maven的中央仓库:http://search.maven.org/ 2.搜索仓库: 进入详细页面 拷贝依赖节点到pom.xml 接下来,就是使用eclipse中进行添加操作,使用GUI工具添加而无需硬编码的形式. 1.在eclipse中打开pom.xml 2.选择底部的[Dependencies]选项卡 3.输入需要的包 4.注意,需要正确输入Group Id,Artifact Id才

《Maven实战》整理三:坐标和依赖

1.1 何为Maven坐标 正如之前所说的,Maven的一大功能就是管理项目依赖.为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标. 1.2 坐标详解 Maven坐标的元素包括:groupId,artifactId.version.packaging.classifier.先看一组坐标定义,如下: <groupId>org.sonatype.nexus</groupId> <artifactId>nexus-inde

Maven 系列 三 :坐标和依赖

1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的. groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应. artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactI

Maven学习笔记之——坐标和依赖(上)

Maven学习笔记之--坐标和依赖(上) 1.    Maven坐标概念 Maven通过构件的坐标来在Maven仓库中定位到具体的构件.Maven的坐标元素包括groupId.artifactId.versiion.packaging.classifier.Maven内置了一个中央仓库地址.需要时Maven会根据坐标到其中下载.具体关于中央仓库的介绍在后面. 2.    Maven坐标详解 比如下面一组坐标: <groupId>org.andy.items</groupId> &l