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之——坐标和依赖(上)的更多相关文章

  1. 【Maven】---坐标与依赖

    Maven坐标与依赖 最近想深度学习下maven,找到一本书叫<Maven实战>,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在 ...

  2. Maven(2)-坐标和依赖

    本文简要介绍Maven里面的坐标(coodinate)以及maven依赖管理(Dependency) 一.坐标 先来个截图: 在上图peoject栏目有groupId,artifactId,versi ...

  3. (二)Maven之坐标和依赖

    目录 坐标 依赖 目录 坐标 引言: 坐标是依赖管理的基础,是构建的唯一标识. 组成元素: 使用groupId.artifactId.version.packaging.classifier标签即可定 ...

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

    例如:添加一个spring-test.jar的依赖过程,普遍的做法就是直接操作pom.xml文件. 1.打开maven的中央仓库:http://search.maven.org/ 2.搜索仓库: 进入 ...

  5. 3.Maven坐标和依赖

    1.1 何为Maven坐标 正如之前所说的,Maven的一大功能就是管理项目依赖.为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标. 1.2 坐标 ...

  6. Maven学习笔记—坐标和依赖

    Maven的坐标和依赖 1 Maven坐标 1.1 什么是Maven坐标 Maven坐标:世界上任何一组构件都可以使用Maven坐标来唯一标识,Maven坐标的元素包括groupId.artifact ...

  7. Maven学习(二) -- 坐标和依赖

    标签(空格分隔): 学习笔记 坐标 实际就像在几何中,我们用一对坐标(x, y)来表示坐标系中唯一的点:或者我们可以用(经度,纬度)来表示地球上的某一个位置,在Maven的世界中,有坐标来唯一的表示项 ...

  8. 03 Maven 坐标与依赖

    Maven 坐标与依赖 Maven 的一大功能是管理项目依赖.为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标.本章将详细分析 Mav ...

  9. maven坐标及依赖范围的学习(1)

    首先,我们先了解什么是maven的坐标(重中之重): 在这里我们可以看到那三个红色的行,基本是pom.xml中出现的最多的配置     例如这个配置:这里我们可以看到我们这个项目的pom文件中,他对名 ...

随机推荐

  1. C++内存泄露检測原理

    转自:http://hi.baidu.com/jasonlyy/item/9ca0cecf2c8f113a99b4981c 本文针对 linux 下的 C++ 程序的内存泄漏的检測方法及事实上现进行探 ...

  2. 执行eclipse,迅速failed to create the java virtual machine。

    它们必须在一排,否则会出现The Eclipse executable launcher was unable to locate its companion shared library的错误 打开 ...

  3. Linux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法

    1. 版本号信息 (1)CentOS 6.4发行版64位,uname -a 显演示样例如以下: Linux localhost.localdomain 3.11.6 #1 SMP Sat Nov 2 ...

  4. 图像重采样(CPU和GPU)

    1 前言 之前在写影像融合算法的时候,免不了要实现将多光谱影像重采样到全色大小.当时为了不影响融合算法整体开发进度,其中重采样功能用的是GDAL开源库中的Warp接口实现的. 后来发现GDAL War ...

  5. [Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

    Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间 ...

  6. WebApi2官网学习记录---批量处理HTTP Message

    原文:Batching Handler for ASP.NET Web API 自定义实现HttpMessageHandler public class BatchHandler : HttpMess ...

  7. 《第一行代码》学习笔记21-Git

    Git(1) 1.Git是一个开源的分布式版本控制工具,其开发者是Linux操作系统的作者Linus Torvalds. 2.仓库(Repository)是用于保存版本管理所需要信息的地方,所有本地提 ...

  8. UIButton和UIImageView的区别

    1.显示图片 1> UIImageView只能一种图片(图片默认会填充整个UIImageView)  image\setImage: 2> UIButton能显示2种图片 * 背景 (背景 ...

  9. 用phpMyAdmin修改mysql数据库密码

    1初始数据库密码为空. 2第一步,点击phpMyAdmin里的用户选项. 3选择root localhost用户名,点击编辑权限. 4此时会出来修改权限的页面,里面可以设置的选项还是比较多的,暂时不管 ...

  10. Windows单击右键没有共享选项怎么办

    文件共享是指在网络环境下文件.文件夹.某个硬盘分区使用时的一种设置属性,一般指多个用户可以同时打开或使用同一个文件或数据.但有时候也会遇到找不到共享选项的情况. Windows单击右键没有共享选项怎么 ...