Maven的概述和基础(学习整理)
1. Maven是啥
Maven是一个项目管理工具,包含了一个项目对象模型(POM),一组标准集合,一个项目生命周期(Lifecycle),一个依赖管理系统,和用来运行定义在生命周期阶段中的插件目标的逻辑。
2. Maven能解决什么样的问题
(1) 解决 jar 包冲突
(2) 编译代码
(3) 便捷进行单元测试
(4) 打包项目、生成报表
(5) 部署项目、生成站点
3. 依赖管理
笼统说,依赖管理就是Maven工程对 jar 包的管理过程
区别:
传统Web工程:jar 包存放在项目中,大大占用磁盘空间
Maven的Web工程:jar 包不放在项目中,而是通过”坐标“在统一的 jar 包仓库中搜索使用,代码重用的开发理念
(因为 jar 包仓库是很大的,一个两个项目体现不出Maven的优势,只有遇到大量项目时才会体现出体积优势)
4. 一键构建项目
构建的步骤:编译、测试、运行、打包、安装、部署
通过将所有的步骤统一交给Maven,做到了项目的一键构建
Maven规范化构建流程
清理、编译、测试、报告、打包、部署
5. Maven仓库
因为Maven项目中没有存放 jar 包,里面只用 jar 包的坐标。要用的 jar 包的时候,就得根据坐标去Maven的仓库中寻找相应的 jar 包。
Maven仓库分为
本地仓库:安装Maven的时候,Maven会自动在C盘的 /User/当前用户/.m2/repository 目录布置本地仓库,可以手动设置本地仓库路径。
中央仓库:apache提供的几乎所有的开源 jar 包仓库。
远程仓库:企业提供不联网情况下也可以下载 jar 包的仓库,仓库安置在企业私有数据库。
关系:
本地仓库:提供项目使用的 jar 包,可以从远程仓库和中央仓库获取 jar 包,也可以将个人的 jar 包上传到远程仓库。
中央仓库:为本地仓库和远程仓库提供几乎所有开源 jar 包。
远程仓库:为本地仓库提供 jar 包,也可以从本地仓库(需要本地仓库手动上传)和中央仓库获取 jar 包。
6. Maven项目结构
Maven将代码分为两个大的部分,分为核心部分和测试部分,将核心和测试分隔开,便于开发和测试
src/main/java:核心代码
src/main/resources:配置文件
src/test/java:测试代码
src/test/resources:测试配置文件
src/main/webapp:web开发的目录,存放页面的资源
7. Maven的常用命令
mvn clean:清理项目生成的编译文件,删除 target 文件夹
mvn compile:编译 src/main 目录下的代码,生成 target 文件夹,存放着编译后的项目文件
mvn test:编译 src/main 和 src/test 目录下的代码
mvn package:编译 src/main 和 src/test 目录下的代码,并将项目打包
(可以在项目 pom.xml 文件的 <packaging> 标签中设置打包的文件格式)
mvn install:编译 src/main 和 src/test 目录下的代码,并将项目打包,将包安装到了本地仓库
mvn tomcat:run:将项目编译后生成的包加载到 Maven 自带的 Tomcat 中
8. Maven的生命周期
Maven项目的五个重要步骤:清理、编译、测试、打包、安装、发布
“清理”作为清理生命周期独立于后五项组成的默认生命周期存在
默认生命周期:要想完成测试就一定要经过编译;要想完成打包就一定要先经过编译、测试两个环节,剩下的步骤同理
9. Maven的概念模型

Maven的两大特性:依赖管理、一键构建
(1) 依赖管理
依赖管理分为 项目对象模型 和 依赖管理模型
项目对象模型:核心的就是项目中的 pom.xml 文件,文件里记录着 项目自身信息、使用的 jar 包信息、项目运行环境信息
依赖管理模型:由 jar 包的坐标和 仓库 组成,坐标由 jar 包的项目名称、模块名称、版本和依赖范围(防止 jar 包冲突)
(2) 一键构建
依赖于Maven的生命周期特性,每一个步骤都依托于Maven底层的一个插件来完成,最后完成一键构建的功能
Maven的概述和基础(学习整理)的更多相关文章
- Linux基础学习整理
linux学习记录 下载地址 centos 下载地址: 网易镜像:http://mirrors.163.com/centos/6/isos/ 搜狐镜像:http://mirrors.sohu.com/ ...
- javascript 基础学习整理 二 之 html对象总结,参考W3C
Anchor 对象 更改一个链接的文本.URL 以及 target 使用 focus() 和 blur() 向超链接添加快捷键 Document 对象 使用 document.write() 向输出流 ...
- javascript 基础学习整理
1. javascript是动态语言,脚本语言,弱类型语言. 2. javascript代码在html文件中的位置安排,放在<body></body>内部与外部的区别.如何引用 ...
- MVC零基础学习整理(一)
1.Mvc程序的启动页的设置:修改程序的Global.asax文件
- 【shell脚本】 变量基础学习整理
1.linux系统环境 echo 'echo /etc/profile ' >> /etc/profile echo 'echo /etc/bashrc' >> /etc/ba ...
- 慕课网Python基础学习整理
# -*- coding: utf-8 -*- """# Python的注释以 # 开头,后面的文字直到行尾都算注释;多行注释开头3个 " 结尾3个 " ...
- maven学习整理-进阶知识
在maven的阶知识主要学习的是maven在eclipse中的使用.依赖相关的问题.继承(父子工程).统一版本管理.聚合等相关知识 1.maven在eclipse中的使用 由上篇基础知识学习到怎样下载 ...
- maven基础学习-为什么要用maven,帮助解决了什么问题,怎么解决的,希望以后学习每个知识点都可以这样问下自己
maven基础学习 第1章 Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Mave ...
- Maven基础学习笔记
Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...
随机推荐
- python实现nc
#!/usr/bin/python2 import sys import socket import getopt import thread import subprocess listen =Fa ...
- python处理RSTP视频流
python链接海康摄像头,并以弹出框的方式播放实时视频流, 这种方式是以弹出框的形式播放.本地测试可以,实际业务场景不建议使用.可以采用rtsp转rtmp的方式 @shared_task def p ...
- 关于Vue父组件把异步获取的数据传给子组件的问题
由于父组件中的数据是异步获取的,而子组件在一开始便会渲染,所以会造成子组件渲染完成后,数据还未获取到的情况 这里有一个简单的解决方案:在子组件渲染前,判断父组件数据是否获取完成,数据获取完成后再渲染子 ...
- js检测是不是数字
function isValueNumber(value) { var reg = (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/); var ...
- K2 BPM_北汽新能源业务流程管理信息系统建设思考_全球领先的工作流引擎
本文由CIO发展中心根据北汽新能源流程与IT总监刘伟霞在“亦庄CIO数字化转型探索——CIO发展中心亦庄分舵2019夏季论坛”活动中演讲整理. 在“亦庄CIO数字化转型探索——CIO发展中心亦庄分舵2 ...
- Flutter学习之Dart语言基础(构造函数)
最常见的构造函数形式,即生成构造函数,创建一个类的新实例: class Point { num x, y; //Dart中int和double是num的子类 //this引用当前类对象 Point(n ...
- Masonry个人笔记
1.有些场合需要获取View在约束之后的frame.直接init初始化后取出来的均为(0,0,0,0).在以下方法中获取即可: View: - (void)layoutSubviews ViewCon ...
- 如何使用Visual Studio Code调试PHP CLI应用和Web应用
在按照Jerry的公众号文章 什么?在SAP中国研究院里还需要会PHP开发? 进行XDebug在本地的配置之后,如果想使用Visual Studio Code而不是Eclipse来调试PHP应用,步骤 ...
- 使用Linux的tcpdump命令结合Windows的wireshark抓包和分析
tcpdump简介 tcpdump是Linux系统下的一款抓包命令集,工作原理是基于网卡抓取流动在网卡上的数据包.在Linux系统中由于tcpdump命令的简单和强大,我们一般直接使用tcpdump命 ...
- 你不知道的JavaScript LHS 和 RHS 查找
今天在学习JavaScript的相关知识时接触到了 LHS(Left Hand Side)和 RHS(Right Hand Side)两种对变量查找的方法,之所以JavaScript要查找变量,那就先 ...