Maven之——坐标和依赖(上)
Maven之——坐标和依赖(上)
1、 Maven坐标概念
Maven通过构件的坐标来在Maven仓库中定位到详细的构件、Maven的坐标元素包含groupId、artifactId、versiion、packaging、classifier。Maven内置了一个中央仓库地址、须要时Maven会依据坐标到当中下载。详细关于中央仓库的介绍在后面。
2、 Maven坐标具体解释
比方以下一组坐标:
<groupId>org.andy.items</groupId>
<artifactId>scattered-items</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
groupId:定义当前Maven项目隶属的实际项目。
artifactId:定义实际项目中的一个Maven项目(模块)
version:定义Maven项目当前所出的版本号。
packaging:定义Maven项目的打包方式、打包方式通常与生成构件的文件扩展名相应、比如上面终于生产的文件名称为:scattered-items-1.0-SNAPSHOT.jar。
而使用war打包方式的Maven项目终于生成的构件会有一个.war文件、其次打包方式会影响到构建的生命周期、当不定义packaging的时候、Maven会使用默认值jar。
classifier:用来帮助定义构建输出的一些附属构件、不能直接定义项目的classifier、由于附属构件不是项目直接默认生成的、而是由附加的插件帮助生成。
上述5个元素中、groupId、artifactId、version、是必须的、packaging是可选的、classifier是不能直接定义的。
3、 依赖配置
一个依赖能够包括的元素(项目中的pom.xml文件):
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<scope></scope>
<type></type>
<optional></optional>
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
跟元素project下的dependencies能够包括一个或者多个dependency元素、以声明一个或者多个项目依赖、每一个依赖能够包括的元素有:
groupId、artifactId、verion:必须元素、基本坐标。
type:依赖的类型、相应与项目坐标的packaging、大部分情况下该元素不必配置、其默认值是jar。
scope:依赖的范围、
optional:标记依赖是否可选、
exclusions:用来排除传递性依赖。
这些都会在后面有具体说明。
4、 依赖范围
Maven在编译、測试、执行项目时会使用不同的classpath、依赖范围就是用来控制依赖与这三种classpath(编译classpath、測试classpath、执行classpath)的关系的、
compile:编译依赖范围。假设没有指定就会默认使用该依赖范围。使用此编译范围的Maven依赖、对于编译、測试、执行三种classpath都有效。
test:測试依赖范围、仅仅对測试classpath有效。比方Junit、仅仅有在编译和測试的时候才须要。
provided:已提供依赖范围、对于编译和測试有效、可是在执行时无效、如servlet.api。编译和測试项目的时候须要、可是在执行的时候、servlet容器已经提供、就不须要Maven反复提供。
runtime:执行时依赖、对于測试和执行classpath有效、可是在编译主代码是无效、如JDBC驱动的实现、项目主代码的编译仅仅须要JDK提供的JDBC接口、仅仅有在执行測试或者执行项目的时候才须要上述接口的详细JDBC驱动。
system:系统依赖范围。其与provided依赖范围全然一致。但使用时必须通过systemPath元素显示第指定依赖文件的路径、慎重使用。
import:导入依赖范围、不会对三种classpath产生实际的影响、他是与dependencyManagement结合使用的。
比如以下一段配置:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.2.RELEASE</version>
<scope>runtime</scope>
</dependency>
那么你在主代码文件夹下想使用Springframework的jar包中的不论什么类都是找不到的、编译器提示错误。
public class FooServiceImpl implements FoodService {
private ApplicationContext context;
private String str;
@Override
会提示找不到ApplicationContext类。这依赖范围<scope>xxx</scope>在使用的时候一定要注意!
|
依赖范围 |
编译classpath |
測试classpath |
执行classpath |
演示样例 |
|
compile |
Y |
Y |
Y |
spring-core |
|
test |
Y |
Y |
junit |
|
|
provided |
Y |
Y |
servlet-api |
|
|
runtime |
Y |
Y |
JDBC驱动 |
|
|
system |
Y |
Y |
本地的、Maven仓库之外的类库文件 |
Maven之——坐标和依赖(上)的更多相关文章
- 【Maven】---坐标与依赖
Maven坐标与依赖 最近想深度学习下maven,找到一本书叫<Maven实战>,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在 ...
- Maven(2)-坐标和依赖
本文简要介绍Maven里面的坐标(coodinate)以及maven依赖管理(Dependency) 一.坐标 先来个截图: 在上图peoject栏目有groupId,artifactId,versi ...
- (二)Maven之坐标和依赖
目录 坐标 依赖 目录 坐标 引言: 坐标是依赖管理的基础,是构建的唯一标识. 组成元素: 使用groupId.artifactId.version.packaging.classifier标签即可定 ...
- Maven添加坐标(依赖)及在Eclipse中的操作
例如:添加一个spring-test.jar的依赖过程,普遍的做法就是直接操作pom.xml文件. 1.打开maven的中央仓库:http://search.maven.org/ 2.搜索仓库: 进入 ...
- 3.Maven坐标和依赖
1.1 何为Maven坐标 正如之前所说的,Maven的一大功能就是管理项目依赖.为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标. 1.2 坐标 ...
- Maven学习笔记—坐标和依赖
Maven的坐标和依赖 1 Maven坐标 1.1 什么是Maven坐标 Maven坐标:世界上任何一组构件都可以使用Maven坐标来唯一标识,Maven坐标的元素包括groupId.artifact ...
- Maven学习(二) -- 坐标和依赖
标签(空格分隔): 学习笔记 坐标 实际就像在几何中,我们用一对坐标(x, y)来表示坐标系中唯一的点:或者我们可以用(经度,纬度)来表示地球上的某一个位置,在Maven的世界中,有坐标来唯一的表示项 ...
- 03 Maven 坐标与依赖
Maven 坐标与依赖 Maven 的一大功能是管理项目依赖.为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标.本章将详细分析 Mav ...
- maven坐标及依赖范围的学习(1)
首先,我们先了解什么是maven的坐标(重中之重): 在这里我们可以看到那三个红色的行,基本是pom.xml中出现的最多的配置 例如这个配置:这里我们可以看到我们这个项目的pom文件中,他对名 ...
随机推荐
- 502 bad gateway是什么意思
通俗解释一下 1.什么是502 bad gateway 报错? 简单来说 502 是报错类型代码 bad gateway 错误的网关 2.产生错误的原因 连接超时 我们向server器发送请求 因为s ...
- JMeter 参数化、检查点、集合点
参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密 ...
- android面试题之七
三十六.请解释下在单线程模型中Message.Handler.Message Queue.Looper之间的关系. 简单的说,Handler获取当前线程中的looper对象,looper用来从存放Me ...
- open(),close() 打开/关闭文件
Open open()是一个系统调用函数,用来打开或创建一个文件,通过不同的oflag选项实现不同功能. 使用时open()函数需要包含的头文件:<sys/types.h>,<sys ...
- VMware SphereESXi上传系统镜像
VMware SphereESXi上传系统镜像 打开右侧[摘要]选项卡 在[资源]中选择存储器中的存储,右键[浏览数据库存储] 选择工具栏[创建文件夹]图标,命名后保存 这样随后找到存储设备,浏览刚才 ...
- 无法连接到ASP.NET Development Server 解决办法
右击项目名称 -> 属性 -> Web -> 选特定端口 -> 输入一个端口值.
- 调试EF源码
在解决方案中添加下载好的EF的源码的引用 在新建项目中添加程序集的引用 添加配置文件中的节点 测试 获取程序集的公钥标记: 使用sn.exe命令 使用reflector
- Java ----------- SQL语句总结(更新中。。。。。。)
#对数据库的操作 *创建数据库 CREATE DATABASE database_name:database_name为创建的数据库的变量名称. #对表的操作
- Java数据结构漫谈-Stack
Stack(栈)是一种比较典型的数据结构,其元素满足后进先出(LIFO)的特点. Java中Stack的实现继承自Vector,所以其天然的具有了一些Vector的特点,所以栈也是线程安全的. cla ...
- mysqlbinlog恢复数据
操作命令: 复制代码代码如下: show binlog events in 'mysql-bin.000016' limit 10; reset master 删除所有的二进制日志flush logs ...