Maven项目构建利器04——Maven的一些核心概念
1.坐标
1)数学上的坐标:
[1].在平面上. 使用X,Y两个向量可以唯一的定位平面上的任意一个点
[2]在空间中, 使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点
2)Maven中的坐标:
使用下面三个向量在查看中唯一定位一个Maven工程,简称GAV
[1]groupid : 公司或组织域名倒序 + 项目名
<groupid>com.wzy.maven</groupid>
[2]artfactid : 模块
<artifactid>Hello</artifactid>
[3]version : 版本
<version>1.0.0</version>
Maven工程的坐标与仓库中路径的对应关系
<groupid>org.springframework</groupid>
<artifactid>spring-core</artifactid>
<version>4.0.0.RELEASE</version>
对应的路径是:groupid / artifactid / version / artifactid-version.jar
org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar
2.POM
含义: Project Object Model 项目对象模型,类似于DOM Document Object Model 文档对象模型pom.xml对于Maven工程是核心配置文件, 与构建过程相关的一切设置都在这个文件中进行配置 重要程度相当于web.xml对于动态web工程。
3.仓库
1)什么是仓库?
Maven仓库就是放置所有jar文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖jar.
2)仓库的分类:
[1]本地仓库: 当前电脑上部署的查看目录, 为当前电脑上所有Maven工程服务
[2]远程仓库:
(1).私服: 架设在当前局域网环境下, 为当前局域网范围内所有Maven工程服务
(2)中央仓库: 架设在Internet上, 为全世界所有Maven工程服务
(3)中央仓库镜像:架设在各大洲, 为中央仓库分担流量, 减轻中央仓库的压力, 同时更快的响应用户请求(如aliyun镜像)
3)仓库中保存的内容
[1]Maven自身所需要的插件
[2]第三方框架或工具的jar包
[3]我们自己开发的Maven工程
4.依赖
1)什么是依赖?
Maven解析依赖信息时会到本地的仓库中查找被依赖的jar包,对于我们自己开发的maven工程, 使用mvn instail命令安装后就可以进入仓库。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2)依赖的范围
Maven依赖有以下几种范围,compile、test、provided、runtime、system,这五种范围分表示了,在项目构建过程当前依赖所起的作用,其中Maven中默认的依赖范围是compile。
[1]compile范围依赖
对主程序是否有效:有效
对测试程序是否有效: 有效
是否参与打包: 参与
是否参与部署: 参与
典型例子: spring-core
[2]test范围依赖
对主程序是否有效: 无效
对测试程序是否有效: 有效
是否参与打包: 不参与
是否参与部署: 不参与
典型例子: junit
[3]provided范围依赖
对主程序是否有效: 有效
对测试程序是否有效: 有效
是否参与打包: 不参与
是否参与部署: 不参与
典型的例子: servlet-api.jar
[4]runtime范围依赖
对主程序是否有效: 有效
对测试程序是否有效: 有效
是否参与打包: 参与
是否参与部署: 参与
典型的例子: JDBC驱动
[5]system范围依赖
对主程序是否有效: 有效
对测试程序是否有效: 有效
是否参与打包: 不参与
是否参与部署: 不参与
典型的例子: 手动引入的jar而非在仓库中查找到的
3)关于system依赖范围的说明
上面几种依赖范围比较特殊的依赖范围就是system,它的作用基本和provided类似,但是需要手动引入jar包的路径,用法如下,通常不建议使用,因为最好的做法是通过Maven在本地仓库引入jar包。
<dependencies>
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
</dependencies>
Maven项目构建利器04——Maven的一些核心概念的更多相关文章
- Maven项目构建利器05——Maven的生命周期
Maven各个构建环节执行的顺序: 不能打乱顺序, 必须按照既定的正确顺序(编译,测试.打包.部署)来执行Maven的核心程序中定义了抽象的生命周期, 生命周期中各个阶段的具体任务是由插件来完成的,可 ...
- Maven项目构建利器03——第一个Maven工程
1.Maven工程的结构 我们需要通过Maven进行自动化构建, 以编译为例, Maven要想自动进行编译, 那么它必须知道Java源文件保存在哪里,所以要遵守Maven的约定,也就是约定大于配置,配 ...
- Maven项目构建利器01——为什么要使用Maven
1.为什么要使用Maven a)一个项目就是一个工程 如果一个项目非常庞大,不适合用package(包)来划分模块, 最好是每一个模块对应一个工程 分工合作,借助于Maven就可以将一个项目拆分成多个 ...
- Maven项目构建利器02——安装Maven核心程序
1.Maven也是用Java编写的工具,同样运行在JVM上,所以我们在安装Maven之前需要确保已经安装了JDK,首先来检查电脑上是否安装JDK. 2.如上图说明电脑中已经安装了JDK,下面就要去官网 ...
- 准备阶段-maven项目构建
依据我现阶段对maven的了解,具使用POM管理项目和强大的repository资源管理库支持. 在项目建立初期,对网站的可拓展.高并发.易于管理做了评估.最终使用Maven 管理该项目 . 如下是m ...
- (转)Maven学习总结(二)——Maven项目构建过程练习
孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(二)——Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项 ...
- Maven学习总结(2)——Maven项目构建过程练习
Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建 ...
- maven系列之二maven项目的创建和maven项目的结构
maven系列之一简单介绍了maven的基本信息,安装和配置,大家对maven有一个大概的了解,但是在maven项目开发中远远不够,为了进一步了解maven,现在我们介绍maven项目的创建和mave ...
- Eclipse如何导入maven项目,以及配置maven
Eclipse如何导入maven项目,以及配置maven 一.准备工作 1. eclipse,安装了eclipse 2. 一个需要导入的maven项目 3. 下载好了的压缩包apache-maven- ...
随机推荐
- ES6 正则的扩展(待细读)
1.RegExp构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. a.参数是字符串,这时第二个参数表示正则表达式的修饰符(flag) var regex = new RegExp('x ...
- 查看Linux基本系统信息
#! /bin/bash #The scripts will return the system infomation #return hostname and version infomation ...
- 从pip+requirements.txt+virtualenv管理依赖到使用pipenv管理依赖-修改布署方式
背景: 已经使用pip+requirements.txt+virtualenv管理了项目一段时间,为了不要每次都 导出依赖(本地),安装依赖(服务器) 现在要使用pipenv来管理项目的依赖关系 思路 ...
- ISO/ISO 参考模型 和 TCP/IP模型
OSI 参考模型 国际化标准组织(International Organization for Standardization,ISO)于1978年提出了一个网络体系结构,成为开放系统互联参考模型(O ...
- node递归批量重命名指定文件夹下的文件
1.用法:将js内容拷到一文件中,命名为batchRename.js: 该文件可以放到任何你想更改文件名的文件夹目录,然后dos(或 linux 终端)进入该文件夹,然后执行node batchRe ...
- PowerDesigner_15连接Oracle11g,反向工程导出模型图
1.启动PowerDesigner2.菜单:File->ReverseEngineer->Database出来NewPhysicalDataModel对话框,DBMS选择ORACLEVer ...
- 采用WPF技术开发截图程序
前言 QQ.微信截图功能已很强大了,似乎没必要在开发一个截图程序了.但是有时QQ热键就是被占用,不能快速的开启截屏:有时,天天挂着QQ,领导也不乐意.既然是程序员,就要自己开发截屏工具,功能随心所欲 ...
- js中的break,continue和return的用法及区别
为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...
- 记一次nginx配置伪静态规则
server { listen 80; server_name sss.cn; root "root/"; location / { index index.html index. ...
- P2814 家谱
我真没什么创意了woc.. so,为什么一道水题是蓝色的???哦哦哦,水好像就是蓝色的,emmm那就不是恶意评分了嘤嘤嘤 ... 好吧实际上可能是非c党对于字符串的处理需要进行编号和结构体,会麻烦一点 ...