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. 限制内容长度(CSS,jQuery)

    CSS(宽度限制在100px之内,超出就会点点点) <style type="text/css"> p{width: 100px;display: inline-blo ...

  2. CSS flex 布局 一些基本属性应用

    作用于伸缩盒元素上的属性 box-orient .box-pack.box-align.box-direction.box-lines box-orient box-orient:horizontal ...

  3. oracle插入例子

    string sql = "insert into EMST_JC_SBXX(XL,SBBM,SBWH,SBMC,CCBM,XNCS,CZXL,ZL,GL,ZZCJ,TCRQ,SYQX,XH ...

  4. string 与char* char[]之间的转换

    1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...

  5. jade的基本语法

    - for (var i=0;i<3;i++) li scnu-learn //这里的=,默认会转义内容 p= "Welcome scnu <strong>good< ...

  6. jquery select三级联动

    需求:对地区进行选择,选择相应的省,就会出现相应范围的市,然后出现相应的范围的县区:如果县不存在,就不现实,自我要求是自己写个简单的插件,方便以后调用: 逻辑:1.通过div的类名来获取,其下的sel ...

  7. ViewDragHelper的使用

    一.ViewDragHelper的原理 是一个能够自用移动ViewGroup内部View的控件. 通过获取ViewGroup的点击事件,之后通过Scroller滑动来进行对ViewGroup内部控件的 ...

  8. 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记

    前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ...

  9. JS window对象的top、parent、opener含义

    .top 该变更永远指分割窗口最高层次的浏览器窗口.如果计划从分割窗口的最高层次开始执行命令,就可以用top变量. .opener opener用于在window.open的页面引用执行该window ...

  10. 100个iOS开发/设计程序员面试题汇总,你将如何作答?

    100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0)   无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目, ...