最近深陷与一个无比垃圾的项目无法自拔,好久没有更新文章了。今天简单介绍一下 Maven 在 Eclipse 中的使用。文章的内容几乎出于《Maven for Eclipse》一书,此书言简意赅,实用性很强。
首先,Maven 是一个软件项目管理和程序理解的工具,一般来说,软件项目管理包括规划,组织,管理资源池,形成资源评估等。简单来说,Maven是一个全面的方法对应用模式的过程构建基础设施,它主要有如下目标:
- 简化程序的构建流程
- 提供统一的构建系统
- 提供质量项目信息
- 提供了项目最佳实战的指导
- 提供了透明的方式迁移新特性
为了实现上述目标,Maven提供了一组构建标准,工件库模型,一个引擎,描述项目,和一个标准的生命周期构建、测试,和部署项目工件。
1.Maven 的原则
Maven 的原则主要有以下几点:
-
- 约定大于配置。Maven定义了默认的项目结构和构建一个开发生命周期用来减轻开发负担。通过指定一个公开定义的模型,使项目便于理解。
- 声明式执行。Maven定义了一个项目构建的生命周期,包括一系列的阶段,这些阶段由plugin goal 组成。plugin goal可以包括声明pom文件来定制一个项目的执行。
- 重用性。Maven建立与可重用性。建立和执行声明在一个项目中可以使用不同的项目。Maven也很容易创建一个组建并整合到多个项目中。
- 清晰的依赖关系。Maven负责依赖管理,从而减少开发人员的负担。不同的冲突处理依赖关系处理得不错。
- 关注程序开发。标准的项目布局和构建生命周期,不需要开发构建;主要应该集中在项目的构建。
2.Maven 的组建架构
Maven 由下面几个不同的组建构建而成:
2.1 Plexus 容器
Plexus 是一个 ICO 容器,提供了面向组件编程的方式去构建模块,重用的组建可以很容易地用来组装何重用。它支持如下的一些特性。
-
-
-
- 组件生命周期
- 组建一致性策略
- 嵌套的容器
- 组件配置
- 自动织入
- 组件依赖
- 许多依赖注入技术,包括构造方法注入,setter 方法注入,私有属性 注入。
-
-
更多信息请访问:http://plexus.codehaus.org/.
2.2 Wagon
Maven Wagon 是一个传输的抽象用在 Maven artifact 和 仓库处理的代码中。Wagon 定义了统一的API,当前有如下供应者。
-
-
-
- File
- HTTP
- HTTP lightweight
- FTP
- SSH/SCP
- WebDAV
-
-
更多信息请访问:https://maven.apache.org/wagon/.
2.3 Maven Doxia
Doxia是内容生成框架,为用户提供了强大的技术来生成静态内容和动态内容。Doxia还用于基于web的发布上下文环境生成静态网站,还可以合并到动态内容生成系统,如博客、wiki和内容管理系统.
更多信息请访问:https://maven.apache.org/doxia/.
2.4 Modello
Maodllo 组件在 Maven 中用来生成不同类型的 artifact 在构建时根据数模模型的引用。
-
-
-
- 数据模型的 Java POJO类型
- Java POJO 转换成 XML
- XML 转换成 Java POJO
- 数据模型的 XDOC 文档
- XML schema 验证 XML 内容是否匹配数据模型
-
-
更多内容请访问:http://maven.apache.org/maven-1.x/plugins/modello/.
2.5 Maven SCM
这个组件提供了常用的 API 来执行源代码管理操作,以下类型是被 SCM 所支持的。
-
-
-
- Bazaar
- CVS
- Git
- Jazz
- Mercurial
- Perforce
- StarTeam
- Subversion
- CM energy
-
-
更多信息请访问:http://maven.apache.org/scm/.