maven使用总结(一)

开发过程中一直在使用mavne,本着学习的态度,还是好好总结总结。

什么是maven?Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。但是这样解释好像还是不能说明maven这个词。当然maven也不是一句话就能说清楚的。或许我们可以通过maven的作用来进一步的了解maven——“Maven主要服务于基于Java平 台的项目构建、依赖管理和项目信息管理”这句话很基本涵盖了maven的主要功能。但要想真正的了解maven还是要详细的了解它的强大作用。为什么用maven:优秀的构件工具:maven是优秀的异常强大的构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。我们不需要也不应该一遍又一遍地输入命令,一次又一次地点击鼠标,我们要做的是 使用Maven配置好项目,然后输入简单的命令(如mvn clean install),Maven会帮我们处理那些烦琐的任务。方便的管理项目依赖:Maven不仅是构建工具,还是一个依赖管理工具和项目信息管理工具。 它提供了中央仓库,能帮我们自动下载构件。在这个开源的年代里,几乎任何Java应用都会借用一些第三方的开源类库,这些 类库都可通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来。手工解决这些问题是十分枯燥的,幸运的是 Maven提供了一个优秀的解决方案,它通过一个坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个 Java类库(如jar文件)。Maven给这个类库世界引入了经纬,让它们变得有秩序,于是我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题。

坐标是Maven构件的唯一标识。坐标由groupId、artifactId、version、packaging、classifier构成。

坐标的5个元素中,groupId、artifactId、version是必须指定的,packaging可选(默认为jar),classifier是不能直接定义的(由辅助的插件帮助生成)。

Maven构建出的文件的文件名一般为:artifactId-version[-classifier].packaging统一的管理项目信息:Maven还能帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。这些微小的变化看起来很琐碎,并不起眼,但却在不知不觉中为我们节省了大量寻找信息的时间。除了直接的项目信息,通过Maven自动生成的站点,以及一些已有的插件,我们还能够轻松获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。如何使用maven:

使用maven其实就是对maven优点的利用:

三套生命周期:Maven拥有三套互相独立的生命周期,它们分别是clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。较之于生命周期阶段的前后依赖关系,三套生命周期本身是相互独立的。(1)Clean生命周期:clean生命周期的目的是清理项目,它包含三个阶段: (2)default生命周期:deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用 (对于本地仓库和远程仓库的概念会在后面介绍)(3)site生命周期:site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段: 命令行与生命周期:从命令行执行Maven的最主要的方式就是调用Maven的生命期阶段。需要注意的是,各个生命周期是相互独立的,而一个生命周期的阶段是有前后依赖关系的,比如你如果使用mvn clean install命令首先调用clean生命周期的pre-clean、clean阶段,然后调用default生命周期的从validate至install的所有阶段,改命令结合了两个生命周期。 其他的也是一样。插件的目标:对于插件本身,为了能够复用代码,它往往能够完成多个任务。例如maven-dependency-plugin,它能够基于项目依赖做很多事情。它能够分析项目依赖,帮助找出潜在的无用依赖;它能够列出项目的依赖树,帮助分析依赖来源;它能够列出项目所有已解析的依赖,等等。为每个这样的功能编写一个独立的插件显然是不可取的,,因为这些任务背后有很多可以复用的代码,因此,这些功能聚集在一个插件里,每个功能就是一个插件目标。maven-dependency-plugin有十多个目标,每个目标对应了一个功能,上诉提到的几个功能分别对应的插件目标为dependency:analyze、dependency:tree和dependency:list。

人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。

maven使用总结(一)

相关文章:

你感兴趣的文章:

标签云: