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)的生命周期(清理.编译.测试.打包.发布.部署.报告等) ...
随机推荐
- 吴裕雄--天生自然PythonDjangoWeb企业开发:解决使用相对路径名导入包中子模块问题
问题 将代码组织成包,想用import语句从另一个包名没有硬编码过的包中导入子模块. 解决方案
- [NOI 2005]瑰丽华尔兹
Description 题库链接 给你一张 \(n\times m\) 的棋盘,棋盘上有一些障碍.一共 \(t\) 个时刻,被分为 \(k\) 段,在每一段中都有一个向上/下/左/右倾斜的趋势(持续时 ...
- C/C++ - 多线程
前几天简单对C和C++中的创建多线程的函数进行了测试,这篇随笔就简单介绍一下创建线程的相关函数. C中三个创建线程函数:pthread_create()._beginthread().CreateTh ...
- Eth合约攻击
前言 Ethernaut是一个类似于CTF的智能合约平台,集成了不少的智能合约相关的安全问题,这对于安全审计人员来说是一个很不错的学习平台,本篇文章将通过该平台来学习智能合约相关的各种安全问题,由于关 ...
- 5款微信小程序开发工具使用报告,微信官方开发工具还有待提升
微信小程序已经内测有一段时间了,笔者本着好奇加学习的心态写了几个小demo,虽然在MINA框架上并没有遇到太多的坑,但官方开发工具实在不敢恭维. api提示不全,要一个个查api啊,写代码超级慢啊 很 ...
- SSH Secure Shell 编码设置-----支持中文
参考:https://www.cnblogs.com/hupf/p/6920323.html #vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB1803 ...
- input不显示边框
参考:https://www.cnblogs.com/mmykdbc/p/6200963.html input{ border: none; outline: none; }
- element ui表格表头顺序错乱的问题
因为在项目中两个表格共用了同一个组件, 但由于表头不完全相同, 就通过v-if来控制表头的显示隐藏,没想到造成了表头顺序的错乱, 经过多方查找资料,最后找到了解决方法: 即为每一列el-table-c ...
- PhpStorm 10.0.1破解激活步骤
1.下载破解补丁 链接:https://pan.baidu.com/s/1S4JVKiaFnCZG01MpDPaAAA 密码:c6x6 放到phpstorm安装目录下的lib文件夹下: C:\soft ...
- 有时间会做系列一(Dice)
题目大意:给n个骰子的每面安排点数,第i个骰子有a[i]面,a[i]和为m,点数范围从1到m,不重复.问怎么安排掷骰子的点数和的期望最大.输出期望和每个骰子的点数(按骰子输入顺序). 思路: EX=x ...