[size=medium]平时工作学习中常常用到maven,但是对其的特性和功能都不甚了解,在此整理一下。
首先,maven是一个用于项目管理的工具,它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的逻辑(from百度百科),听起来就很复杂,我们用maven就是为了方便的管理项目,记得刚开始学习web开发的时候,如果开发时需要引用别人的接口,常常手动添加jar包,那是在项目都很小的时候,后来实习时候到企业开发项目,一个很大的项目常常要多人协作完成,时常要引入外部接口,这时maven的强大之处就体现出来了,我只需要在pom文件配置好,至于jar包版本变化,冲突,引入和删除,就完全交给maven,程序员就可以集中精力写代码了。
[b]项目对象模型[/b]:
maven是以项目为核心设计,那它必然有一个模型来描述项目,这就是项目对象模型。pom就是maven对一个单一项目的描述。 pom.xml 文件以 xml 的形式描述项目的信息,包括项目名称、版本、项目 id 、项目的依赖关系、编译环境、持续集成、项目团队、贡献管理、生成报表等等。官方实例:[/size]
[size=medium]
在 POM 中,groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。
[b]项目生命周期:[/b]
生命周期指项目的构建过程,常用的过程:
[list]
[*]clean 移除所有上一次构建生成的文件
[*]compile 编译项目的源代码
[*]test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
[*]install 将包安装至本地仓库,以让其它项目依赖。
[*]package 将项目打包,方便用来上传到服务器
[/list]
[b]依赖管理:[/b]
maven是通过maven坐标来解决依赖关系的,maven坐标能够确定一个项目。依赖关系是在 dependencies 部分中定义。如下,定义了junit的依赖[/size]
[img]http://dl2.iteye.com/upload/attachment/0111/4372/8f359264-5a80-33f4-ae14-ae6b8653f3be.png[/img]
[size=medium]
pom还有继承和合成关系,继承用于从继承父项目中的pom结构,合成用于父项目下的子项目。web开发通常根据MVC分层思想将项目不同层打包成子项目进行管理。
[b]maven库:[/b]
maven库是一个很重要的概念,我们通过pom解决依赖关系,但这些依赖的文件从哪而来,就是maven库。
对于稳定的版本,也就是官方发布的公认的版本,直接根据maven构件的坐标体系就能够获得,从本地仓库中找,如果本地仓库没有,就从pom.xml和setting.xml配置的远程仓库来找。对于临时版本,你install之后需要上传到公司的远程仓库服务器上,这样别的开发才能下载和使用。
maven 默认的远程库(http://repo1.maven.org/maven2) (中央仓库)下载,默认本地库在C:\Users\${username}\.m2\repository下,用户可以自己配置。
maven settings.xml 这个文件包含了配置远程仓库服务器,认证信息和本地仓库的配置信息,公司配置的远程仓库就在这了。
[b]profile配置[/b]
Maven 的 Profile 元素可以为一个特殊的环境自定义一个特殊的构建,使得不同环境间构建的可移植性成为可能。常用于产品的开发,测试,发布,线上等不同的环境下的实现不同的配置。[/size]
首先,maven是一个用于项目管理的工具,它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的逻辑(from百度百科),听起来就很复杂,我们用maven就是为了方便的管理项目,记得刚开始学习web开发的时候,如果开发时需要引用别人的接口,常常手动添加jar包,那是在项目都很小的时候,后来实习时候到企业开发项目,一个很大的项目常常要多人协作完成,时常要引入外部接口,这时maven的强大之处就体现出来了,我只需要在pom文件配置好,至于jar包版本变化,冲突,引入和删除,就完全交给maven,程序员就可以集中精力写代码了。
[b]项目对象模型[/b]:
maven是以项目为核心设计,那它必然有一个模型来描述项目,这就是项目对象模型。pom就是maven对一个单一项目的描述。 pom.xml 文件以 xml 的形式描述项目的信息,包括项目名称、版本、项目 id 、项目的依赖关系、编译环境、持续集成、项目团队、贡献管理、生成报表等等。官方实例:[/size]
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
[size=medium]
在 POM 中,groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。
[b]项目生命周期:[/b]
生命周期指项目的构建过程,常用的过程:
[list]
[*]clean 移除所有上一次构建生成的文件
[*]compile 编译项目的源代码
[*]test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
[*]install 将包安装至本地仓库,以让其它项目依赖。
[*]package 将项目打包,方便用来上传到服务器
[/list]
[b]依赖管理:[/b]
maven是通过maven坐标来解决依赖关系的,maven坐标能够确定一个项目。依赖关系是在 dependencies 部分中定义。如下,定义了junit的依赖[/size]
[img]http://dl2.iteye.com/upload/attachment/0111/4372/8f359264-5a80-33f4-ae14-ae6b8653f3be.png[/img]
[size=medium]
pom还有继承和合成关系,继承用于从继承父项目中的pom结构,合成用于父项目下的子项目。web开发通常根据MVC分层思想将项目不同层打包成子项目进行管理。
[b]maven库:[/b]
maven库是一个很重要的概念,我们通过pom解决依赖关系,但这些依赖的文件从哪而来,就是maven库。
对于稳定的版本,也就是官方发布的公认的版本,直接根据maven构件的坐标体系就能够获得,从本地仓库中找,如果本地仓库没有,就从pom.xml和setting.xml配置的远程仓库来找。对于临时版本,你install之后需要上传到公司的远程仓库服务器上,这样别的开发才能下载和使用。
maven 默认的远程库(http://repo1.maven.org/maven2) (中央仓库)下载,默认本地库在C:\Users\${username}\.m2\repository下,用户可以自己配置。
maven settings.xml 这个文件包含了配置远程仓库服务器,认证信息和本地仓库的配置信息,公司配置的远程仓库就在这了。
[b]profile配置[/b]
Maven 的 Profile 元素可以为一个特殊的环境自定义一个特殊的构建,使得不同环境间构建的可移植性成为可能。常用于产品的开发,测试,发布,线上等不同的环境下的实现不同的配置。[/size]