(以下一些内容来自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
分享到:
相关推荐
apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-...
【标题】"maven学习笔记1--myeclipse10中的配置" 在IT行业中,Maven和MyEclipse是两个非常重要的工具,它们在软件开发过程中扮演着关键角色。Maven是一个项目管理工具,主要用于Java项目的构建、依赖管理和项目信息...
【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...
maven3-plugin-3.0.1-sources.jar
exec-maven-plugin是Maven生态系统中的一个插件,它允许用户在Maven构建过程中执行外部命令或脚本。这使得Maven项目可以集成更多的自定义操作,比如运行特定的脚本、调用系统命令等。本文将详细介绍exec-maven-...
apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-...
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...
maven3-plugin-3.0.0-1-sources.jar
java maven 仓库包 pentaho-aggdesigner-algorithm-5.1.3-jhyde.jar
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
maven-aether-provider-3.2.1-sources.jar maven-antrun-plugin-1.3.jar maven-archiver-2.2.jar maven-artifact-3.2.1-sources.jar maven-assembly-plugin-2.2-beta-5.jar maven-bundle-plugin-1.0.0.jar maven-...
apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-...
`maven-compiler-plugin-3.8.0-source-release` 是 Maven 生态系统中不可或缺的一部分,它提供了可靠的源代码编译功能,使得开发者能够专注于编写代码,而无需关心构建过程的细节。通过理解 Maven 插件的工作原理和...
maven-deploy-plugin-2.8.2.jar
apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-bin.tar.gz apache-maven-...
maven-jar-plugin-3.1.1.jar
- 解压后,你会得到一个名为“apache-maven-3.8.1”的文件夹,这个就是Maven的安装目录。 **3. 设置环境变量** 为了使Maven在命令行中可直接使用,需要设置两个环境变量: - `M2_HOME`:指向Maven的安装目录,例如...
maven-surefire-plugin-2.22.1.jar
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...