Maven 简介

Apache Maven是一个软件项目管理和构建工具。基于项目对象模型(POM)的概念,Maven可以根据统一的信息描述来管理项目的构建,报告和文档。Maven强大和流行的一个重要原因是它提供了完善的生命周期模型(lifecycle),这个模型中运行Maven的每个步骤都由它来定义,这种预定义提供的默认规则有很高的重用性,能为项目的构建提供了极大的帮助,这使得Maven用起来很简单,而且这个模型的接口针对不同的项目都是一样的,这对使用者来说又减少了学习和使用成本。(不过模型多了选择起来也是个问题)

Maven可以做的事情包括:项目构建前的整理、编译、测试、打包、部署,生成项目报告,站点并发布。


Maven

安装

Maven的最新推荐版本是3.3.9。本站推荐的下载地址:

http://mirrors.tuna.tsinghua.edu.cn/apache/

Maven3.3需要JDK1.7或更高版本JDK的支持,JDK的安装可以看这里。Maven本身安装需要10MB左右空间,它的本地存储库不低于500MB。

我们以Ubuntu下的安装为例,如图省事按下面的方法安装,不一定是最新版本,和操作系统有一定关系,如果是Ubuntu 14的话默认安装的是Maven3.0.5:

1
2
$ sudo apt-get update
$ sudo apt-get install Maven

如果希望安装最新的版本,还是手动安装可靠。通过上面推荐的地址可以下载到apache-maven-3.3.9-bin.tar.gz的包,下载解压:

1
$ sudo  tar -xvzf apache-maven-3.3.9-bin.tar.gz

然后修改配置文件:~/.bashrc。

export M2_HOME=/home/apache-maven-3.3.9

export PATH=$M2_HOME/bin:$PATH

不重新启动即可让配置生效的命令如下:

1
$ source ~/.bashrc

查看一下版本号:

1
$ mvn -v

配置

Maven的配置文件是Settings.xml,如果用apt-get install安装后找不到Maven目录可以用这个命令试试:dpkg -L Maven,一般会在/etc/maven目录下。

运行

Maven围绕生命周期的理念构建,所以构建和发布项目的过程都是有明确定义的。Maven有三个内置的构建生命周期:

  • 默认生命周期,处理项目的的各个阶段包括创建、编译、测试、打包验证安装、部署等。我们运行的示例,就按照默认生命周期的关键节点来。
  • 清理生命周期,处理项目的清理包括项目清理前准备、清除上次构建的所有文件、完成项目清理等。这个周期相对简单,运行完默认生命周期后可以自己看看。
  • 站点生命周期,处理项目的站点文档包括预处理、项目网站文档生成、部署准备、部署到指定服务器等。这个周期相对也比较简单,运行完默认生命周期后可以自己看看。
1
$ mvn archetype:generate -DgroupId=com.hubwiz.helloworld -DartifactId=helloworld -Dversion=1.0-SNAPSHOT

这时archetype:generate命令会为我们列出一系列的archetype供选择,Archetype就可以理解成Maven为我们提供的项目生命周期模型,从简单的Swing到复杂的Web应用都有。过程中的可选择的编号非常多,我们选择888,结果如下:

Maven archetype

我们可以看看Maven为我们构建的目录和文件:

1
2
$ cd helloworld
$ tree

Maven 构建

可以看看Maven为我们建好的App.java文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.hubwiz.helloworld;   

/**
* Hello world!
*
*/
public class App {


public static void main( String[] args ) {
System.out.println( "Hello World!" );
}
}

下面用Maven来完成打包

1
2
$ mvn package 
$ tree

Maven在helloworld下面建立了一个新的目录target/,打包后的jar文件helloworld-1.0-SNAPSHOT.jar存放在该目录下;class文件放在target/classes/下,测试文件放在 target/test-classes/下面。

Maven target

可以用java命令运行一下验证看看。

1
$ java -cp target/helloworld-1.0-SNAPSHOT.jar com.hubwiz.helloworld.App

通过下面的命令可以将项目安装到本地库中,这样就可以和其他的使用者建立依赖关系。

1
$ mvn install

如果你想清理这次构建的所有文件你可以试试:

1
$ mvn clean

上次构建所产生的target目录就会消失。

当然你也可以看看构建完成后的网站文档是什么样的:

1
2
$ mvn package
$ mvn site

在target/site目录下,可以看到一个形成的报告文件。