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文件中,他对名 ...
随机推荐
- 曾经的足迹——对Linux CAN驱动的理解(1)
在Ti的AM335X系列Cortext-A8芯片中,CAN模块采用D_CAN结构,实质即两路CAN接口. 在此分享一下对基于AM335X的Linux CAN驱动源码的理解.下面来分析它的驱动源码及其工 ...
- WebSphere性能优化的几个方法
1.更改http server的配置文件参数KeepAlive. 原因:这个值说明是否保持客户与HTTP SERVER的连接,如果设置为ON,则请求数到达MaxKeepAliveRequest ...
- 安装VMware Sphere ESXi 5.5
安装VMware Sphere ESXi 5.5 1.准备 待安装ESXi 5.5的机器需要大于2GB以上内存,并且支持64位和虚拟化. 下载:VMware-VMvisor-Installer-5.5 ...
- javascript系统时间
<div> <%--系统时间--%> 当前时间是: <script type=& ...
- GDI+(Graphics Device Interface)例子
使用SolidBrush 单色画笔 Bitmap bitmap = new Bitmap(800, 600); Graphics graphics = Graphics.From ...
- Oracle存储过程procedure
--给plsql块设置一个名称保存下来便于调用 /* Create or replace procedure 名称 As 声明变量 Begin //代码块 End; --plsql块 Declare ...
- 华为 oj 公共子串计算
水题,原来以为用dp数组 结果wrong了两次 我想还是自己小题大做了···呵呵·· 献给初学者作为参考 #include <stdio.h> #include <string.h ...
- dug
http://blog.csdn.net/ysy441088327/article/details/8992393 http://www.cnblogs.com/Leo_wl/p/4423922.ht ...
- mysql 8小时空闲后连接失效的解决
查了一下发现应用程序和mysql数据库建立连接,如果超过8小时应用程序不去访问数据库,数据库就断掉连接 .这时再次访问就会抛出异常. 关于mysql自动断开的问题研究结果如下, 1.c3p0.Hika ...
- Blogger支持Mobile行动版网页 - Blog透视镜
目前几乎人人都使用行动装置像是Pad,智能型手机等,而Blogger也针对此类的使用者,推出支持Mobile行动版网页,提供简单清爽的页面,方便在小屏幕上的阅读,在设定上也相当的简单,同时还可以在计算 ...