Hiroki

大部分笔记已经转移到 https://github.com/hschen0712/machine_learning_notes ,QQ:357033150, 欢迎交流

Maven介绍

Maven是什么?

Maven全名Apache Maven,是软件开发组织Apache开发的用于Java项目管理的自动构建工具。Maven解决了构建软件两方面的问题:

  1. 它描述了软件是如何建立的
  2. 它描述了它的依赖关系

与Apache Ant不同的是,它为创建过程提供了规范。Maven使用XML文件来描述软件项目构建的过程、项目依赖的外部模块和组件、构建顺序、目录和需要的插件等。

什么是POM?

Maven项目通过项目对象模型(Project Object Model)来配置,配置信息存储在一个名为pom.xml的文件中。pom.xml是一个Maven项目的核心,一个Maven project可以没有代码,但不能没有pom,因为maven所有一切都是在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>

其中,groupId是我们的组织名称,artifactId是我们的项目名称,version是项目的版本号, dependencies是依赖关系列表。具体的标签含义,可以参考Apache Maven的官方主页:POM Reference,到时候我会写一篇POM的详解。

使用Maven创建Java工程时会自动创建下图所示的目录结构:

Maven中一些重要概念

POM

一个项目对象模型提供了单一项目需要的所有配置。通常的配置有: 项目的名字、所有者、对其他项目的依赖关系等。用户可以通过插件单独配置构建过程的每一小步。例如, 我们可以配置编译插件来使用Java 1.5来进行编译, 或者指定,如果一些单元测试失败也可以进行项目打包。
大项目可以被分为若干个模块或子项目, 每个模块都可以有自己的POM。 POM还可以继承自其他的POM。所有的POM都 默认继承自一个Super POM。Super POM提供了默认的设置,比如默认的源代码目录,默认插件等。

插件

Maven实质上是一个插件执行框架,所有的工作都是通过插件完成的。Maven的插件主要分为构建插件和报告插件。

  • 构建插件 将会在构建期间被执行,需要在POM的元素下配置
  • 报告插件 将会在站点生成时被执行,在部分配置

一个插件通过如下代码执行:

mvn [plugin-name]:[goal-name]

举个例子, 一个Java项目可以通过mvn compiler:compile用compiler插件的compile功能来编译。
除了上面举出的例子,Maven还提供了丰富的插件功能,比如构建,测试,源代码管理,在服务器上运行,生成Eclipse项目文件等等,具体可以透过Maven Plugins页面进行了解。我们可以通过在pom.xml文件的部分配置使用哪些插件,这样做的好处是省去了繁琐的人工步骤,编译、单元测试、打包一气呵成。如果手动执行这些步骤,需要键入3行命令:

mvn compiler:compile
mvn surefire:test
mvn jar:jar

参考:
Maven wiki
Apache Maven主页
[Maven Reference]http://books.sonatype.com/mvnref-book/reference/

posted on 2015-11-03 15:07  Hiroki  阅读(253)  评论(0编辑  收藏  举报

导航