Apache Maven是一个软件项目管理和构建工具。基于项目对象模型(POM)的概念,Maven可以根据统一的信息描述来管理项目的构建,报告和文档。Maven强大和流行的一个重要原因是它提供了完善的生命周期模型(lifecycle),这个模型中运行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 | sudo apt-get update |
如果希望安装最新的版本,还是手动安装可靠。通过上面推荐的地址可以下载到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为我们构建的目录和文件:
1
2 cd helloworld
tree
可以看看Maven为我们建好的App.java文件:
1 | package com.hubwiz.helloworld; |
下面用Maven来完成打包:
1
2 mvn package
tree
Maven在helloworld下面建立了一个新的目录target/,打包后的jar文件helloworld-1.0-SNAPSHOT.jar存放在该目录下;class文件放在target/classes/下,测试文件放在 target/test-classes/下面。
可以用java命令运行一下验证看看。
1 | $ java -cp target/helloworld-1.0-SNAPSHOT.jar com.hubwiz.helloworld.App |
通过下面的命令可以将项目安装到本地库中,这样就可以和其他的使用者建立依赖关系。
1 | $ mvn install |
如果你想清理这次构建的所有文件你可以试试:
1 | $ mvn clean |
上次构建所产生的target目录就会消失。
当然你也可以看看构建完成后的网站文档是什么样的:
1 | $ mvn package |
在target/site目录下,可以看到一个形成的报告文件。