maven坐标及依赖范围的学习(1)
首先,我们先了解什么是maven的坐标(重中之重):
在这里我们可以看到那三个红色的行,基本是pom.xml中出现的最多的配置
例如这个配置:
这里我们可以看到我们这个项目的pom文件中,他对名为(maven-jar-plugin)的插件进行了依赖(dependency,依赖)
同时这个插件的版本为2.4,不过要注意的是,这个插件并不是一加载这个插件就会执行它的任务,因为这个插件要在开发者执行特定的命令后才会执行(关于这些在eclipse里执行maven的命令较为常用的几个,详情见 http://blog.csdn.net/u011939453/article/details/43017865),你可以看见有一个是package命令(注意mvn可以不写,因为在eclipse里run as默认是在maven里运行的),,运行完成之后机会惊喜的发现,你的项目的target文件里多了一个jar包!!(这里可能你会出现并没有jar包,这时你最好右键点击你的项目名,找到maven选项,update一下!!)
关于这个scope(依赖范围),这个其实作用是指,你依赖(dependency)里的jar包或者其他项目,他们并不是全局跟着你的项目周期走的!如图,具体范围:

可能你对这个依赖范围不是很明白,但是你可以通过这个表的例子这个列来看事务本质:
(1)log4j,可以说这个日志几乎要在项目的全局出现,所以他在三个时期都是有效的,所以scope的范围是compile。
(2)junit,相信这个包很多人一定很熟悉(不熟悉的先去百度其他帖子看看这是什么),我相信大家一定知道,当你把你的项目源码打包给你的客户时,你一定不会想把那么多测bug的代码也一起给他吧?所以scope为test时,这个依赖的东西是不是进入打包阶段的!!
(3)servlet-API,这个其实可以这样理解,我们平时在web代码时,例如写servlet,我们需要引入servlet的jar包,因为我们在编译期间需要用到这些类和接口,就像A类里需要import B类似得,这样在写代码时不会出现编译错误(语法错误!),但是当我们往tomcat上发布时,Tomcat本身就提供了这个jar包,这里就可能产生冲突,所以这里的servlet jar包就需要设置provided,以确保不在运行期间起作用,servlet API不会出现在打包好的war中,(war,web应用)。
(4)JDBC Driver,这是一个依赖范围是runtime的jar包,是一个只在运行期间起作用的依赖jar包,在runtime scope下定义的依赖只会在运行期可用,而在构建期的类路径下不可用。这些依赖将会被打包到最终的artifact中。比如你有一个基于web的应用需要在运行时访问MySQL数据库。你的代码没有任何MySQL数据库驱动的硬依赖。你的代码仅仅是基于JDBC API来编写,在构建期并不需要MySQL数据库驱动。然而,在运行期,就需要相应的驱动来操作MySQL数据库了。因此,这个驱动应该被打包到最终的artifact中。
maven坐标及依赖范围的学习(1)的更多相关文章
- 03 Maven 坐标与依赖
Maven 坐标与依赖 Maven 的一大功能是管理项目依赖.为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标.本章将详细分析 Mav ...
- 3.Maven坐标和依赖
1.1 何为Maven坐标 正如之前所说的,Maven的一大功能就是管理项目依赖.为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标. 1.2 坐标 ...
- 4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念
1 maven概念模型 2 maven的生命周期,项目构建过程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg== ...
- Maven学习笔记—坐标和依赖
Maven的坐标和依赖 1 Maven坐标 1.1 什么是Maven坐标 Maven坐标:世界上任何一组构件都可以使用Maven坐标来唯一标识,Maven坐标的元素包括groupId.artifact ...
- 【Maven】---坐标与依赖
Maven坐标与依赖 最近想深度学习下maven,找到一本书叫<Maven实战>,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在 ...
- Maven学习(二) -- 坐标和依赖
标签(空格分隔): 学习笔记 坐标 实际就像在几何中,我们用一对坐标(x, y)来表示坐标系中唯一的点:或者我们可以用(经度,纬度)来表示地球上的某一个位置,在Maven的世界中,有坐标来唯一的表示项 ...
- Maven学习笔记2(坐标和依赖)
1.坐标 Maven坐标为各个构件建立了秩序,任何一个构件都必须明确自己的坐标,一个maven坐标是由一些元素确定的 <groupId>com.alivn.account</grou ...
- maven学习(九)——maven中的坐标、依赖以及仓库
一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 ver ...
- Maven - Maven3实战学习笔记(2)坐标和依赖
1.maven坐标元素 maven坐标元素包括:groupId.artifactId.version.packaging.classifier. classifier:定义输出的附属构件.groupI ...
随机推荐
- 【坑】Mybatis原始获取配置方式,获取配置失败
错误环境: mysql版本:6.0.6 mybatis 3.4.1 idea 2017.1.2 maven 3.5.0 错误描述: 配置经路径见图1,classpath是java文件夹 获取配置的代码 ...
- 第六章、ajax方法以及序列化组件
目录 第六章.ajax方法 一.choice参数介绍 二.MTV与MVC模型 三.ajax方法 四.案例 五.Ajax传json格式的数据 六. AJAX传文件 代码如下 ajax传文件需要注意的事项 ...
- Delphi 对象的特性
- web开发:动画及阴影
一.小米拼接 二.过渡动画 三.过度案例 四.盒子阴影 五.伪类设计边框 一.小米拼接 将区域整体划分起名 => 对其他区域布局不产生影响提出公共css => reset操作当有区域发送显 ...
- 屏蔽恶意IP
#!/bin/bash cat /var/log/secure | grep Failed | awk -F " " '{print $11}'| sort| uniq -c| a ...
- [CodeForces 160A] Twins
题目链接:http://codeforces.com/problemset/problem/160/A 注意排序是从大到小排,不要上来就sort导致从小到大排,细节水题. AC代码: #include ...
- Hdu 4661 树上拓扑序计数
#include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ; ], nxt[MAXM << ...
- js技术javascript 该重视
当下,js大有挤压php java asp.net之类后端语言的趋势,直接js html5 socket与后端python c c++ 等通信 更不用提二维 三维计算展示 方面 医院呼叫 报警 处理 ...
- 修改文件属性与权限(鸟哥linux私房菜)
chgrp:改变文件所属用户组 chown:改变文件所有者 chmod:改变文件的权限 chgrp [-R] dirname/filename ... chgrp users install.log( ...
- NOI2018 你的名字——SAM+线段树合并
题目链接在这里洛谷/LOJ 题目大意 有一个串\(S\),每次询问给你一个串\(T\),两个数\(L\)和\(R\),问你\(T\)有多少个本质不同的子串不是\(S[L,R]\)的子串 SOLUTIO ...