Apache Maven

Apache Maven，是一个软件（特别是Java软件）项目管理及自动构建工具，由Apache软件基金会所提供。Maven也可被用于构建和管理各种项目，例如C#，Ruby，Scala和其他语言编写的项目。Maven曾是Jakarta项目的子项目，现为由Apache软件基金会主持的独立Apache项目。

Maven解决了软件构建的两方面问题：一是软件是如何构建的，二是软件的依赖关系。不同于Apache Ant等早期工具，Maven设定了构建流程的标准，在此之外只需要指定例外情况。XML文件描述了正在构建的软件项目、它对其他外部模块和组件的依赖关系、构建顺序、目录和所需的插件。该文件通常有预设的目标任务，例如代码编译和打包。Maven从一个或多个代码仓库（例如Maven 2 Central Repository）动态地下载Java库与Maven插件，并将其存储在本地缓存区中。

Maven是以基于插件的架构构建的，这使其能够使用任何能用标准输入控制的应用程序。Maven 2同时维护了为C/C++准备的原生插件。

尽管Gradle和sbt等替代技术并不依赖于XML，但他们仍然保留了Maven引入的关键概念。Apache Ivy还开发了一个专用的依赖管理器，同时支持Maven仓库。

Apache Maven也包括对可重现构建的支持。

 示例 
Maven项目使用项目对象模型（Project Object Model，POM）来配置。

项目对象模型存储在名为 pom.xml 的文件中。

以下是一个简单的示例：

<project>
  <!-- model version is always 4.0.0 for Maven 2.x POMs -->
  <modelVersion>4.0.0</modelVersion>

  <!-- project coordinates, i.e. a group of values which
       uniquely identify this project -->

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>

  <!-- library dependencies -->

  <dependencies>
    <dependency>

      <!-- coordinates of the required library -->

      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>

      <!-- this dependency is only used for running and compiling tests -->

      <scope>test</scope>

    </dependency>
  </dependencies>
</project>

 参见 

 ，一种与Maven紧密结合的持续集成服务器
 一种将XML转为可执行代码的工具
 ，可作为替代的Java依赖管理工具
 Gradle，一种基于约定优于配置的编译工具
 Hudson


 补充阅读 


 有免费的PDF供下载和在线阅读：http://www.sonatype.com/documentation/books 

 參考資料 

 外部链接 

 Maven项目官方网站
 Maven 2新手教程：Maven 2用户练习指南- 教程在 
 完整参考，一本已出版的并可免费在线阅读的书
 用Maven 2构建Web应用程序
 Maven 2 POM揭秘 - 文章在JavaWorld
 在你的POM中验证依赖
 Maven的历史
 用于PHP的Maven

Category:編譯工具
Category:自动化构建
Category:Java開發工具
Category:程序设计工具
Category:Apache软件基金会