关于maven

关于maven

1.       背景介绍

学习关于maven:https://www.cnblogs.com/hafiz/p/8119964.html

https://www.cnblogs.com/lxrm/p/6116668.html

 

 

学习关于pom.xml元素解读: http://www.cnblogs.com/hafiz/p/5360195.html

 

1.1.    Maven的定义及用途:

maven是java平台下的一个项目构建和依赖管理的自动化管理工具。提供了开发人员构建一个完整的生命周期框架,开发团队可以自动完成该项目的基础设施建设。可以方便地编译代码、进行依赖管理。

注:一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。[何1] 

1)  简化和标准化软件项目建设过程[何2] ,从而使得编译,分配,文档,团队协作和其他任务能够无缝连接。

2)  利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现程序集成等等。

3)  maven 最强大的功能就是能够自动下载项目依赖库[何3] 。

1.2.    Maven工作原理

maven的工作原理是POM(Project Object Model)。POM将每一个工程看做一个可管理的对象,POM中管理该project的所有东西,包括该project的创建人信息、项目的 licenses、项目代码的存放位置信息( URL of where the project lives)、该项目的所有三方依赖(dependencies)、配置文件等等,一个POM包含一个项目的所有必须的信息,你只需要查看该project的POM就可以知道所有你想知道的该项目的相关信息。当然,POM的实现机制实际上是一个XML配置文件,pom.xml。

1.3.    使用Maven

1)  Maven项目的结构和内容在一个XML文件中声明,pom.xml,这是整个Maven系统的基本单元。pom.xml中定义了项目的构建、相关性和文档。

2)  在自己的计算机中配置Maven环境,搭建与配置maven:

Windows系统下安装配置maven:https://www.yiibai.com/maven/maven_environment_setup.html

1.4.    Maven命令

 

1.4.1.   Clean

清理,在进行真正的构建之前进行一些清理工作,移除所有上一次构建生成的文件。

执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。

1.4.2.   Validate

验证工程是否正确,所有需要的资源是否可用。

1.4.3.   Compile

编译:编译项目中的java文件,并存放在项目的编译目录,会下载相关jar包。

1.4.4.   Test

运行测试代码,比如JUnit写的测试

1.4.5.   Package

打包,将编译好的工程文件打包为指定的格式,例如JAR,WAR等。

打包(jar等)到本项目的target下。

这个命令会在你的项目路径下创建一个target目录,并且拥有compile命令的功能进行编译,同时会在target目录下生成项目的jar/war文件。

如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目,说明a项目在本地仓库是没有找到它所依赖的b项目,这时就用到install命令了。

注:package命令完成了项目编译、单元测试、打包功能

1.4.6.   verify

运行任何检查,验证包是否有效且达到质量标准。

1.4.7.   Install

把target下打的包(jar等),安装至本地仓库,将包安装至本地仓库,以让其它项目依赖。

该命令包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用。

(如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b项目时,会在本地仓库同时生成pom文件和jar文件,解决了上面打包package出错的问题。)

注:install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库

1.4.8.   site

生成项目相关信息的网站。

1.4.9.   deploy

把本地jar包发送到远程仓库(私服)。

注:deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

 

 


 [何1]Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。

 

clean生命周期

pre-clean :执行清理前的工作;

clean :清理上一次构建生成的所有文件(target);

post-clean :执行清理后的工作

 

default生命周期

default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。

验证(validate): 验证项目是否正确,所有必要的信息可用

编译(compile): 编译项目的源代码

测试(test): 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求代码被打包或部署

打包(package): 采用编译的代码,并以其可分配格式(如JAR)进行打包。

验证(verify): 对集成测试的结果执行任何检查,以确保满足质量标准

安装(install): 将软件包安装到本地存储库中,用作本地其他项目的依赖项

部署(deploy): 在构建环境中完成,将最终的包复制到远程存储库以与其他开发人员和项目共享。

 

site生命周期

pre-site

site :生成项目的站点文档;

post-site

site-deploy :发布生成的站点文档

 

在默认(default)的生命周期处理你的项目部署,将清洁(clean)的生命周期处理项目的清理,而网站(site)的生命周期处理你的项目站点文档的创建。

 

 [何2]使用maven管理的项目有标准的目录结构,使得不同project有相同或相近的目录结构,这样程序会更易读。

maven生命周期(the default/clean/site lifecycle)以及组成这些lifecycle的各个阶段(phase)都是maven定义好的,执行mvn <phase>就会顺序执行具体lifecycle的若干个phase。这个过程也可以看做是maven标准化了project的compile、package、install等操作过程,使得整个project的build过程的各个阶段得到无缝连接。

 [何3]这个功能带来的几个好处:

第一,开发过程中不用到相关网站手动下载软件开发包然后copy所依赖的jar包到相应的工程中,只需要配置一下pom.xml就可以了,之后maven会根据你的pom.xml自动查找下载你的项目所依赖的jar包;

第二,当项目所依赖的jar包有更新时,你也可以不用管,maven会自动帮你下载更新相应的jar包到本地maven仓库。当然,这也是需要在pom.xml中实现配置好,maven才会帮你自动更新项目所依赖的jar包。

第三,有些依赖是直接依赖,你的项目依赖一个jar包,你将该jar包直接导入进来就可以了。但是有些时候,你的项目所依赖的jar包又依赖于其他jar包,这种时候管理三方jar包以及三方jar包所依赖的其他jar包就会变得非常复杂,然而借助于maven这个软件项目管理工具,就可以避免上述麻烦。

转载于:https://www.cnblogs.com/winner963/p/11032217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值