《Maven官方文档》插件的开发

原文链接    译者:carvendy

来讲解一下Maven 2.0 插件的发展

      maven中有一个核心引擎,它提供了基础项目的处理能力和构建能力的管理,还有很多用于构建任务的插件。

那到底什么是插件呢?

Maven 核心框架就是一个插件的集合。换而言之,这些插件就是行为的执行者,插件可以用于:创建jar文件,war文件,编译代码,单元测试,创建项目文档等等。几乎任何的行为,你都可以认为是这个项目在执行对应的Maven插件。 插件是Maven的核心特性并可以给多个项目重复使用。插件执行的这些行为包含在一个项目描述——项目对象模型(POM)。插件行为可以通过描述每个插件目标(或者是Mojo)的唯一参数而自己定制。 Maven 2.0 其中一个最简单的插件就是clean插件。这个清除插件可以移除Maven 2 项目中target目录东西。当你执行 “mvn clean”,Maven 2 执行这个“清除”目标,然后target目录的内容就被清除了。这个清除插件定义一个参数可以用于自定义插件行为,这个参数被叫做输出目录和它默认为${project.build.directory}。

什么是一个Mojo?(或者 为什么命名为‘Mojo’)

Mojo开始被定义在Maven 2,插件程序由一系列的目标(Mojo)。Mojo可以定义在类似注释的java类或Shell脚本。一个Mojo指定的元数据为 一个目标 :一个目标名,即合适的生命周期,和一些期望参数。 Mojo担当着POJO(普通的JAVA对象),替代 “Maven”的普通。Mojo 也是一个好看的词(看定义)。从维基百科,一个 “mojo” 定义就是“ 。。。一个人衣服下的小包一样”(或者被称为有魔力的手)。这些包通过超自然的力量,如同保护邪恶,带来好运等。

比较 Maven 1.x 的插件

与Maven 1.x的相同之处

Maven 2.0与上一代相似的有两个主要的功能。第一,它组织项目数据在连贯的整体上,和暴露这些数据用于构建过程。第二,Maven协调指挥一个插件在构建过程中的启动和实际运作。 很多在Maven 2.0东西将会更简单面向Maven 1的用户,和插件系统没有异常。Maven 2插件体现了更好的表现相比于 1.x使用。好比在1.x 的插件,他们用着共同的项目信息和自定义配置执行工作。而Maven 2 插件是组织和执行连贯的方式来构建引擎的——也就是说,这个引擎是在插件执行之前,负责组织和填充插件的要求。 操作上,Maven 2.0 应该感觉像一个更高性能的Maven 1.0的兄弟。当pom发生改变,它将会基础的安排和特征(和值得注意的条件)。无论如何,这就是相似的地方了。Maven 2.0 是一个完整的重新设计和Maven构建理念的实现。举个例子,它有很多不同和很多发展架构——至少对于我们来说。

与Maven 1.x的差异

看着似乎相似的架构,Maven 2 提供了更多环境变量让插件使用。新的架构提供管理生命周期,多种实现的语言,可重用性的系统,和更多优点。可以说最大的优点就是可以完全使用java写maven插件,允许开发者可以开发充分发挥和制作测试工具来帮助自己。 在Maven 2.0 之前,构建系统组织相关插件在一个松散的生命周期里,一些确定依赖目标的先决条件和装饰用前目标和后目标。这个批判来自于Maven社区。这告诉我们通过可能100w中不同的构建情节,在构建中很多的行为适合分到少部分的分类。此外,这些适合目标的分类像是构建过程执行中的一个精确的预测。借鉴这些经验,Maven 2.0 定义了管理生命周期的插件和相对应的位置。 Maven 2.0开始的时候,插件实现在不同的程序和不同脚本语言 但共存相同的构建过程。这除去一些插件开发者要学习特定语言的念头更好与maven互动。由稳定性和语言丰富度来减少风险。 Maven 2.0开始的时候 是影响整合多项目直接进入构建的核心架构。在Maven 1.x,很多大项目分裂成相似的构建回避问题,例如 编译一个子集的classes;划分服务端和客户端代码;或者周期性依赖不同程序类库。这个转变让创建额外的复杂构建,由于多次构建不得不创建一个整体的或一个以上的项目。当项目1.x版本确切时,多个新项目版本会时后聪明的时候。反应器创建作为适用于所有的功能,和多项目插件是后来加到反应器的设置里作为一些公共的构建类型。无论如何,这个解决方案(只是解决方法,再加上一些宏)从未集成这些多项目构建过程的想法到maven核心概念架构里。

为什么改变插件的架构?

看了前面这些新版本的部分了,对比老版本总结优点:

  • 管理生命周期
  • 多种实现语言
  • 可重用的构建系统
  • 可以用java实现Maven插件
         Maven 1,插件的定义使用Jelly,虽然它可能是在java写的一个插件,你还不得不与一些强制性的Jelly包装你的插件脚本。在运行时解释的基于XML的脚本语言不会是性能的最佳选择,开发团队认为采用一种方法允许插件开发人员从插件实现选择数组中选择是明智的。Maven 2的第一选择应该是java插件,但您也可以使用一个支持的脚本语言如Beanshell。
        总结一下,开发团队看见api里一些关键的差距和1.0插件程序架构,团队决定解决这些未来发展的不足,让Maven作为一个好用的工具做更强大的事情。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Maven官方文档》插件的开发


魔术师Carvendy

魔术师Carvendy

尘世间一小小Javaer ,喜欢coding和思考。
魔术师Carvendy
FavoriteLoading添加本文到我的收藏
  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

您必须 登陆 后才能发表评论

return top