欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven学习笔记(1) ---- 初探Maven

程序员文章站 2022-03-09 14:21:25
...
(以下一些内容来自Maven-definitive-guide.pdf文档及Maven Reference中文版)


很早就听说Maven了,但一直没机会去学习和使用,这几天因为需要使用,抽空学习了下,并对一些重点作了下笔记,现整理放在blog中作备份:-P

Maven定义
  Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
  Maven 的核心是声明性构建,依赖管理,仓库管理,基于插件的高度和重用。

Convention over Configuration(约定优于配置)
      大多数情况下Maven会使用默认行为来完成目标任务,而不需要配置过多。例如,在没有自定义的情况下,源代码假定是放置在${basedir}/src/main/java,资源文件假定放置在${basedir}/src/main/resources,测试代码假定放置在${basedir}/src/test,而编译后的classes假定放置在${basedir}/target/classes,而生成的jar文件假定放置在${basedir}/target下。乍一看也许觉得没什么,但想一下,如果是Ant,以上目录都必须明确地进行定义。
  Maven 对约定优于配置的应用不仅仅是简单的目录位置,Maven 的核心插件使用了一组通用的约定,以用来编译源代码,打包可分发的构件,生成 web 站点,还有许多其他的过程。 Maven 的力量来自它的"武断",它有一个定义好的生命周期和一组知道如何构建和装配软件的通用插件。如果你遵循这些约定,Maven 只需要几乎为零的工作——仅仅是将你的源代码放到正确的目录,Maven 将会帮你处理剩下的事情。
  使用“遵循约定优于配置”系统的一个副作用是用户可能会觉得他们被强迫使用一种特殊的方法。 当然 Maven很多默认行为还是可配置的。

A Common Interface (通用接口)
  在Maven之前,不同的软件项目有着不同的构建方式,想要理解不同项目的构建方式需要耗费大量的精力,而Maven正是为构建软件项目提供了一个更为通用的接口(A Common Interface),而使用Maven进行构建和管理的软件都有着相似的地方,构建起来也更加方便,例如,你想要构建使用Maven的Apache Wicket项目,你只需要check out源代码,运行mvn install即可。

插件(Plugin)与仓库(Repository)
  Maven核心除了解析一些 XML 文档,管理生命周期与插件之外其它的它都不做,也不懂。Maven被设计成将主要的功能职责委派给一组Maven插件,这些插件提供对目标的访问,如编译源代码、打包class文件,发布站点等等,影响Maven生命周期。
  Maven中很重要的一个概念是仓库(Repository),仓库是Maven插件、第三方类库等的集中存放点,当你第一次使用Maven或运行mvn install时,它会自动从*Maven仓库下载大部分核心Maven插件,Maven 从远程仓库获取依赖和插件的这一事实允许了构建逻辑的全局性重用。Maven 将一般的构建任务抽象成插件,同时这些插件得到了很好的维护以及全局的共享,你不需要从头开始自定义你项目的构建系统然后提供支持。这就是基于 Maven 插件的全局性重用。

Maven中项目的概念
  Maven 维护了一个项目的模型,除了需要把源码编译成字节码,还需要开发软件项目的描述信息,为项目指定一组唯一的坐标,你需要描述项目的属性,如谁开发这个项目?项目的许可证是什么等等。所以Maven不仅仅是一个“构建工具”,它不仅仅是在类似于 make 和 Ant 的工具的基础上的改进,它是包含了一组关于软件项目和软件开发的语义规则的平台。

  项目是根据一个包含groupId(组标识符),artifactId(构件标识符)和version(版本)的唯一的坐标定义的。项目间可以使用这些坐标来声明依赖。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dangdanglili/archive/2009/04/20/4093919.aspx