Maven快速入门简明教程学习笔记

Maven的概念

Maven是什么

Maven是一个项目构建管理工具。
Maven是项目进行模型抽象,充分运用的面向对象的思想, Maven可以通过- -小段描述信息来管理项目的构建,报告和文档的软件项目管理I具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。
人话:有了maven之后不管是git还是svn都不要再提交jar包,可以大大的减少项目库的大小。只需要提交pom.xml和代码即可,其他人也可以通过maven下载到一模一样的jar包。

Maven的作用

1、maven对项目的第三方构件(jar包)进行统一管理。向工程中加入ar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
2、maven提供一套对项目生命周期管理的标准,开发人员和测试人员统一使用maven进行项目构建。
3、项目生命周期管理:编译、测试、打包、部署、运行。
4、maven对工程分模块构建,提高开发效率。

Maven的概念模型

1、项目对象模型(Project Object Model)。 POM对象模型,每个maven工程中都有一 -个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。
2、依赖管理系统(基础核心)。maven通过坐标对项目工程所依赖的jar包统一 规范管理。
3、maven定义一套项目生命周期。清理、初始化、编译、测试、报告、打包、部署、站点生成。
4、一组标准集合。maven工程有自己标准的工程目录结构、定义坐标有标准。
5、maven管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件。

Maven的仓库

本地仓库:

相当于缓存,工程第一次会从远程仓库 (互联网)去下载jar包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。

中央仓库:

就是远程仓库,仓库中jar由专业团队( maven团队)统一维护。中央仓库的地址: http://repo1.maven.org/maven2/

远程仓库:

在公司内部架设一台私服 ,其它公司架设一台仓库 ,对外公开。国内有阿里

Maven的安装与配置

下载

官方地址:https://maven.apache.org/download.cgi,下载zip包

安装

直接解压即可。

配置环境变量

配置MAVEN_HOME:
添加到Path:%MAVEN_HOME%\bin;
测试是否配置正确:
命令行输入:mvn -version

修改本地仓库的位置

打开maven安装目录中conf里的setting.xml文件,找到:  <localRepository>标签
新建一个repository文件夹(我就直接建在Maven的安装目录),修改路径为此文件夹路径,注意路径中不要有中文,不要有特殊符号。

修改IDEA的Maven配置

修改Maven主路径,用户配置文件,本地仓库
添加JVM参数  -DarchetypeCatalog=local,如果不添加此参数,IDEA联网下骨架出问题就会卡死。

新建Maven项目

新建SE项目

IDEA–new project–maven–使用骨架创建项目,用org.apache.maven.archetype.quickStart
GroupId:组织名,公司名
ArtifactID:项目名
Version:版本号

新建web项目

选择Maven的路径和仓库

maven的规范

蓝色是写源码的
绿色是写测试的
红色是目标class

maven的目录结构

maven的目录结构是固定格式

Maven生命周期命令

Maven的生命周期

Maven拥有三套相互独立的生命周期,它们分别为clean,default和site。

Clean生命周期(Clean Lifecycle)

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段:

  • pre-clean 执行一些需要在clean之前完成的工作
  • clean 移除所有上一次构建生成的文件
  • post-clean 执行一些需要在clean之后立刻完成的工作

Default生命周期(Default Lifecycle)

Default Lifecycle是构建的核心部分,编译,测试,打包,部署等等,Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。

一些比较重要和常用的阶段:

  • compile 编译项目的源代码
  • install 将包安装至本地仓库,以让其它项目依赖。
  • deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享
  • process-test-resources 复制并处理资源文件,至目标测试目录
  • process-resources 复制并处理资源文件,至目标目录,准备打包
  • test-compile 编译测试源代码
  • test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
  • package 接受编译好的代码,打包成可发布的格式,如 JAR

Site生命周期(Site Lifecycle)

Site Lifecycle 生成项目报告,站点,发布站点,站点的文档(站点信息,依赖..)。Site生命周期,生成站点信息四个阶段:

  • pre-site 执行一些需要在生成站点文档之前完成的工作
  • site 生成项目的站点文档
  • post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

Maven的常见命令

clean

clean是maven工程的清理命令,执行 clean会删除target目录及内容。

 

 compile

compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。
cmd进入命令状态,执行mvn compile,如下图提示成功:

test

test是maven工程的测试命令 mvn test,会执行src/test/java下的单元测试类。

 

 package

package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。

install

install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。

从运行结果中,可以看出: 当后面的命令执行时,前面的操作过程也都会自动执行。

Maven的插件

开发中基本不会使用maven插件

导入依赖

Maven依赖

导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xmI中使用<dependency>标签引入依赖。

Maven中央仓库:

https://mvnrepository.com/

依赖范围

依赖的jar默认情况可以在任何地方可用,可以通过`scope`标签设定其作用范围
这里的范围主要是指以下三种范围
(1)主程序范围有效(src/main目录范围内)
(2)测试程序范围内有效(src/test目录范围内)
(3)是否参与打包(package指令范围内)
此外:`scope`标签的取值有四种:`compile,test,provided,runtime`
大T笔记所有文章均为本人原创,转载请您注明来源,并留下原文链接地址,是对我的尊重,也是对知识的尊重,谢谢!
大T笔记 » Maven快速入门简明教程学习笔记

大T笔记-我的个人互联网创业和自由职业之路

关于我 我的百宝箱
大T笔记-专注个人互联网创业和自由职业