Maven入门详解

来源:互联网 发布:个人博客网站html源码 编辑:程序博客网 时间:2024/05/16 08:12

 什么是Maven?

 

       绝大部分 Maven用户都称 Maven一个"构建工具":一个用来把源代码构建成可发布的构件的工具。构建工程师和项目经理会说 Maven 是一个更复杂的东西: 一个项目管理工具

      Ant相比,ant这样的构建工具仅仅是关注预处理,编译,打包,测试和分发。像 Maven 这样的一个项目管理工具提供了构建工具所提供功能的超集。除了提供构建的功能,Maven可以生成报告,生成 Web站点,并且帮助推动工作团 队成员间的交流

       Maven的确是是一个构建工具,服务与构建.使用Maven配置好项目后,输入简单的命令,如:mvnclean install,Maven会帮我们处理那些繁琐的任务.

       Maven是跨平台的.

       Maven最大化的消除了构建的重复.

       Maven可以帮助我们标准化构建过程.所有的项目都是简单一致的,简化了学习成本.

       Maven作为一个构建工具,不仅帮我们自动化构建,还能抽象构建过程,提供构建任务实现.他跨平台,对外提供一致的操作接口,这一切足以使他成为优秀的,流行的构建工具.

       但是Maven作为一个依赖管理工具和项目信息管理工具.他还提供了中央仓库,能帮我们自动下载构件.

使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(ConventionOver Configuration)。

 

       当然 Maven有一些核心观点不应该被怀疑,但是其实很多默认行为还是可配置的。例如项目源码的资源文件的位置可以被自定义,JAR文件的名字可以被自定义,在开发自定义插件的时候,几乎任何行为可以被裁剪以满足你特定的环境需求。如果你不想遵循约定,Maven也会允许你自定义默认值来适应你的需求

总之,它提供了三种功

1 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。

2 项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布...

3 项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等

 

Maven如何管理jar包

       关于jar包的坐标,maven是通过groupId,artifactId,以及version确定一个唯一的jar包。

       jar包历来声明如下:

<dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-context</artifactId>

   <version>3.2.17.RELEASE</version>

   <scope>compile</scope>

</dependency>

<dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-webmvc</artifactId>

   <version>3.2.2.RELEASE</version>

</dependency>

<dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-orm</artifactId>

   <version>3.2.2.RELEASE</version>

 </dependency>

 

scope是声明范围,在不同的生命周期要求会有所不同。


 

在Maven中会涉及到几种仓库:

1 工作空间,即我们的项目工程,这里面可能会放着pom.xml文件,这个pom.xml就是maven的配置文件

2 本地仓库,本地仓库用于存放jar包,其实Jar包并不是直接放入工作空间的,它是存放在本地仓库,然后在执行发布打包的时候,添加依赖路径

3 私库:私库是使用者自己搭建的maven仓库,用于缓解频繁从外网下载jar包资源的压力。而且使用私库作为缓存层,也相对安全一些。

4 共享仓库:书中所说的中央仓库或者一些常用的镜像网站都属于这种,国内比较著名的oschina以及163都是不错的maven仓库。

当我们在pom中声明了依赖关系后,参考上面的图:

1Maven在执行相关的任务时,会先去本地仓库查看是否有该资源,如果有的话,判断版本是否正确,如果一切都没问题则直接使用;否则,执行下一步

2 Maven会去配置的共享仓库中查找,如果找到就拷贝到本地仓库中;找不到则会给出相关的提示

3 Maven在本地如果搭建了私库,则会去私库中查找,找到就拷贝到本地仓库;找不到就会去共享仓库中查找,然后放入私库和本地库。有了私库,局域网内的开发者可以共享依赖,就不用每个人都去外网下载jar包,浪费带宽了。

 

 

 

三、 Maven的生命周期与阶段

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

1 . 1 clean生命周期

  1. pre-clean    :执行清理前的工作;
  2. clean   :清理上一次构建生成的所有文件;
  3. post-clean   :执行清理后的工作

1 . 2default生命周期

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

  1. validate
  2. initialize
  3. generate-sources
  4. process-sources
  5. generate-resources
  6. process-resources   :复制和处理资源文件到target目录,准备打包;
  7. compile   :编译项目的源代码;
  8. process-classes
  9. generate-test-sources
  10. process-test-sources
  11. generate-test-resources
  12. process-test-resources
  13. test-compile   :编译测试源代码;
  14. process-test-classes
  15. test   :运行测试代码;
  16. prepare-package
  17. package   :打包成jar或者war或者其他格式的分发包;
  18. pre-integration-test
  19. integration-test
  20. post-integration-test
  21. verify
  22. install   :将打好的包安装到本地仓库,供其他项目使用;
  23. deploy   :将打好的包安装到远程仓库,供其他项目使用;

1 . 3 site生命周期

  1. pre-site
  2. site   :生成项目的站点文档;
  3. post-site
  4. site-deploy   :发布生成的站点文档
1 0
原创粉丝点击