Maven的原理和使用
一、Maven能做什么
1、假设我们有10个项目,都需要引入spring core模块,那么需要十份重复的Spring Core.jar和commons-logging.jar
使用Maven:maven使用本地仓库存储的jar,所有项目都会公用仓库中的同一分jar
2、Spring Core.jar必须同时引入版本兼容的commons-log.jar,否则会报错
使用Maven:maven不需要关心这些问题,会自动引入Spring core.jar所需的兼容版本jar
3、如果一个项目里面有个100个jar,不知道那些jar是彼此关联的,那些是互相排斥的,当需要升级版本时,增加或删除一些jar,很容易出各种问题
使用Maven:maven升级jar,只需要把版本3.x改成4.x,他会自动解决那些问题

概括的说:Maven是一个项目管理和综合工具。Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。Maven增加可重复性并负责建立相关的业务。
二、Maven的安装和设置
1、安装之前,首先确定你已经安装了JDK
2、下载地址:http://maven.apache.org/download.cgi
3、将安装文件解压到你指定的目录中
4、配置环境变量,变量名M2_HOME,变量值为Maven的安装目录,修改path值,在变量值后面加上bin,例如:%M2_HOME%/bin
5、测试maven环境,执行命令:mvn -v
三、从Maven模板创建一个项目
1、整个项目的项目目录结构会自动创建

2、所有的源代码放在文件夹/src/main/java/,所有的单元测试代码放入:/src/test/java/
3、附加的一个标准的pom.xml被生成,这个Pom文件类似于Ant build.xml文件,它描述了整个项目的信息,一切“从目录结构”,项目的插件,项目依赖,如何构建这个项目等。
4、Maven各个目录的解释说明

5、pom的基本信息

6、pom的依赖关系

7、pom详解
a、添加插件

b、去除依赖

c、继承

d、聚合(通过一个大的项目来整合各个小的模块)

e、指定在Build时需要的资源文件(resource)

四、Maven的生命周期
1、clear:移除上一次构建生成的文件
2、compile:编辑项目的源代码
3、test:使用单元测试框架进行测试,测试代码不会被打包或者部署
4、package:接受编译好的代码,打包成可发布的格式
5、install:将包安装到maven本地仓库,供本地其他maven项目使用
6、deploy:将最终的包发布到远程仓库,供其他开发人员和maven项目使用。
7、site:生成项目的站点文档
五、Maven仓库

在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构建。
Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。
任何一个构件都有其唯一坐标,根据这个坐标可以定义其在仓库中的唯一路径,这就是Maven仓库的布局方式。
如:groupId=org.testing
artfactId=testing
version=5.8
生成路径:org/testing/testing/5.8/testing-5.8-jdk15.jar
六、Maven的依赖
1、依赖的传递性
一个复杂的项目会包含很多依赖,也有可能包含依赖其他构件的依赖。这个是Maven的强大特征之一,它支持了传递性依赖。
依赖原则:路径优先原则,第一声明原则。
解决依赖问题:
通过调整dependency的顺序来解决:那个依赖的顺讯在前面就依赖那个
自己添加一个denpendeny来解决:因为该路径是最小的
通过exclusions元素排除不想要的传递性依赖。
2、Version解释
snapshot版本表示不稳定,处于开发中的版本,即快照版本
release:表示趋于稳定,当前停止更新,可以用于发行的斑斑。
场景:协同开发时,如果A依赖B,由于B频繁更新,B应该使用SNAPSHOT来标识自己。
3、依赖范围Scope
compile(默认):编译范围的依赖,它在编译和打包的时候都会把该依赖打包进去
test:测试依赖范围,它在编译和打包的时候不会把该依赖打包进去
provided:在编译和测试范围有效,最后生成war包时不会打包进去
rumtime:运行时依赖,编译的时候不依赖
import:导入依赖范围
system:系统依赖范围
Maven的原理和使用的更多相关文章
- maven 工作原理和添加jar包技巧
相 信只要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量,一个 build.xml 能够完成编译.测试.打包.部署等很多 ...
- Maven 核心原理
Maven 核心原理 标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖.打包), M ...
- Maven - 工作原理
章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Maven – 构建生命周期.阶段 ...
- 分享知识-快乐自己:Maven 相关原理
依赖原则:解决模块工程之间的Jar冲突问题 1):情定设定:验证路径最短者优先原则 创建三个工程如下: Hello:并且以来 log4j.1.2.17.jar HelloFriend:依赖了工程 He ...
- Maven使用笔记(三)Maven的工作原理
概述 Maven是一个项目管理工具,他包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义生命周期阶段中插件目标的逻辑. Maven是基于约定优于配置的思想来管理代码 ...
- SONATYPE NEXUS搭建MAVEN私服
1.为什么使用Nexus如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费 ...
- CentOS安装Nexus(Maven私有库)详细配置及上传本地jar到私服
Nexus原理 Maven的原理就是将jar从远程中央仓库下载到PC磁盘的本地仓库,当本地仓库没有发现需要的jar就会去Maven默认的远程中央仓库Maven Central(由Apache维护)中寻 ...
- 向西项目管理工具Maven一片
前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...
- Maven - Maven速成
Maven Maven是一个项目构建和管理工具,有助于开发者快速完成项目的配置,快速建立开发环境,从而提高开发效率. 管理项目构建(build)的生命周期(清理.编译.测试.打包.发布.部署.报告等) ...
随机推荐
- 关于and 和or的执行优先级问题分析
题目:列出本店价低于60或者高于100.并且商品点击数大于628的商品. 按照下面两种写法,得到的结果是不同的. 第一种:结果数据中有点击数为628的记录,显然不符合题目要求. SELECTgoods ...
- day8 文件的读取
只读 只写 追加 读写 功能 username = input('请输入你要注册的用户名:') password = input('请输入你要注册的密码:') with open('list_of_i ...
- Manacher(马拉车)算法
Manacher算法是一个求字符串的最长回文子串一种非常高效的方法,其时间复杂度为O(n).下面分析以下其实行原理及代码: 1.首先对字符串进行预处理 因为回文分为奇回文和偶回文,分类处理比较麻烦,所 ...
- 你需要知道的 JavaScript 类(class)的这些知识
作者: Dmitri Pavlutin译者:前端小智来源:dmitripavlutin 点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经 ...
- 中山Day5——普及
今天题目真是贼难呐...才38... 收获:树状数组单个修改 树状数组区间修改 T1:旅行 题意:有n个数,问;从中取任意个数,他们的和为质数的方案数是多少?(n<=50) 暴力模拟即可,这里不 ...
- win10安装Oracle11g
第一步,下载 oracle 下载地址,官网(需要登录注册): http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_databa ...
- pip使用镜像的方法
http://e.pypi.python.org/这个就是官网了,清华大学提供的 建议非清华大学校内的使用这个镜像: http://e.pypi.python.org/simple(这也是一个http ...
- 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)
关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...
- 为Linux环境安装图形化界面
1.更新软件源并升级系统 yum uppdate&&yum install wqy-microhei-fonts 2.安装GNOME+VNC一键包 wget https://gist. ...
- ubuntu16.04 使用tensorflow object detection训练自己的模型
一.构建自己的数据集 1.格式必须为jpg.jpeg或png. 2.在models/research/object_detection文件夹下创建images文件夹,在images文件夹下创建trai ...