Sym - 一个用 Java 实现的现代化社区平台 • 源码 • 注册

Pipe - 小而美的开源博客平台 • 体验 • 皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载 
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

项目管理: Maven 让事情变得简单

目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant 的项目管理工具(作为 make 的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它元信息(如开发人员/拥有者、版本或站点主页)。

Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

Maven vs Ant

那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,我要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant 代表两个差异很大的工具,所以我将只说明这两个工具的等同组件之间的区别,如表 1 所示。

表 1. Maven vs Ant


Maven Ant
标准构建文件project.xml 和 maven.xmlbuild.xml
特性处理顺序
  1. ${maven.home}/bin/driver.properties
  2. ${project.home}/project.properties
  3. ${project.home}/build.properties
  4. ${user.home}/build.properties
  5. 通过 -D 命令行选项定义的系统特性
最后一个定义起决定作用。
  1. 通过 -D 命令行选项定义的系统特性
  2. <property> 任务装入的特性
第一个定义最先被处理。
构建规则构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。构建规则或多或少是静态的,除非使用 <script> 任务。(请参阅 参考资料以获得相关教程。)
扩展语言插件是用 Jelly(XML)编写的。插件是用 Java 语言编写的。
构建规则可扩展性通过定义 <preGoal><postGoal> 使构建 goal 可扩展。 构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal><postGoal> 所起的作用。
        <br><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" height="1" width="100%"><br><img alt="" src="http://www.ibm.com/i/c.gif" border="0" height="6" width="8"></td></tr></tbody></table><table class="no-print" align="right" cellpadding="0" cellspacing="0"><tbody><tr align="right"><td><img src="http://www.ibm.com/i/c.gif" alt="" height="4" width="100%"><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" height="16" width="16"><br></td><td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/j-maven/#main" class="fbox"><b>回页首</b></a></td></tr></tbody></table></td></tr></tbody></table><br><br><p><a name="2"><span class="atitle">Maven 的主要组件</span></a></p>
        <p>

既然您了解了 Maven 和 Ant 之间的区别,让我们来研究 Maven 的主要组件,如图 1 所示。

            <br><a name="N100FB"><b>图 1. Maven 的主要组件



Maven 的主要组件


项目对象模型



目对象模型(Project Object Model,POM)描述项目的各个方面。尽管对于 POM 的物理表示没有内在的限制,但 Maven
开发人员通常使用一个 XML 项目文件(project.xml)。该 XML 文件格式由位于 Maven 安装目录中的 XML
模式(maven-project.xsd)定义。


通常,project.xml 文件由三个主要部分组成:


  • 项目管理部分包括项目的组织、开发人员名单、源代码位置和错误跟踪系统 URL 等信息。

  • 项目相关性部分包括关于项目相关性的信息。当前 Maven 实现(1.0 beta 测试版 8)仅支持 JAR 文件相关性。
  • 项目构建和报告部分包含项目构建信息(如源代码目录、单元测试用例目录)和要在构建中生成的报告。

清单 1 显示了带注释的样本 project.xml 文件。因为 project.xml 文件中的许多元素都是可选的,所以,随着您对 Maven 理解的加深,可以逐步使用不同的 Maven 特性。 注:在以下代码中,可选的元素都以 “可选的(OPTIONAL)” 标明。

        <p>主文档包含项目的唯一标识和组标识。事实证明,当项目包括多个子项目时,组标识非常有用。所有的子项目应共享同一组标识,但每个子项目应有不同的 
    <code>&lt;id&gt;</code> 。
  </p>
        <br><a name="N1012D"><b>清单 1. 主 project.xml 框架</b></a><br>
        <table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="code-outline"><pre class="displaycode">&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br>&lt;!-- A project file's root element --&gt;<br>&lt;project&gt;<br>  &lt;!-- The POM version. This tag is currently unused. --&gt;<br>  &lt;pomVersion&gt;3&lt;/pomVersion&gt;<br>  &lt;!-- A project group id. If present, the id serves as the project's<br>        directory name in the repository --&gt;<br>  &lt;groupId&gt;crayola-group&lt;/groupId&gt;<br>  &lt;!-- A unique project identifier. The project identifier and its<br>        version number often generate file/directory names during the<br>        build. For example, a project JAR file follows the<br>        &lt;id&gt;-&lt;version&gt; naming convention. --&gt;<br>  &lt;id&gt;crayola&lt;/id&gt;<br>  &lt;!-- A short name for the project --&gt;<br>  &lt;name&gt;Crayola Professional&lt;/name&gt;<br>  &lt;!-- The project version number. Maven does not enforce a particular<br>        version numbering scheme. --&gt;<br>  &lt;currentVersion&gt;0.0.1&lt;/currentVersion&gt;<br>  ...<br>  &lt;!-- <br>

欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步