Maven学习2
Maven的定义
Maven是什么,有人说他是一个构建工具,有人说是一个管理工具,也有人用到过它的生成报告,生成Web站点。那么Maven到底是什么?
一个更正式的 Apache Maven 的定义: Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven中的约定优于配置(Convention over Configuration)
其实约定优于配置这个概念很早就出现了,就是程序编写者将默认的参数值设置好,时期在系统默认的情况下运行的最快,而不是把这个工作交给用户来执行。当然,在系统中用户也可以更改这些默认的配置,达到自己希望的效果。
Maven通过一些类的配置实现这个概念,例如,在没有自定义的情况下,源代码假定是在 ${basedir}/src/main/java,资源文件假定是在${basedir}/src/main/resources 。测试代码假定是在 ${basedir}/src/test 。项目假定会产生一个 JAR 文件。Maven 假定你想要把编译好的字节码放到${basedir}/target/classes 并且在 ${basedir}/target 创建一个可分发的 JAR文件。
Maven中定义的一般性接口
在Maven之前,如果要用Subverion迁出一个项目,我们需要花几个小时来了解项目自定义的构建环境。例如,需要用什么样的开发包,什么样的开发框架等等。在Maven定义了一般接口后,我们就可以将这些工作交给Maven来进行,而我们只需要输入一个mvn install命令而已。那么,Maven是通过什么做到这些的呢?其实,Maven什么都不做,只是解析一些XML文件而已。虽然这么说有些夸张,但是,Maven最核心的就是这些。

浙公网安备 33010602011771号