介绍:
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。它是个java工具,用于管理java工程。
安装:
要运行maven,需要装jdk,最好1.5及以上(不能仅装个jre)。然后去maven官网下载最新版的maven进行安装。
下面以windows xp系统上运行maven为例做个介绍:
1. 我这里下载的是apache-maven-3.0.4-bin.tar.gz
2. 解压,放入你要安装maven的目录,如这里解压后目录为:E:\Maven\apache-maven-3.0.4
3. 设置用户环境变量
M2_HOME为maven安装目录,这里为:E:\Maven\apache-maven-3.0.4
4.再设置用户环境变量M2为%M2_HOME%\bin
5.(可选)设置用户环境变量MAVEN_OPTS,来指定JVM属性设置,如可以设置为: -Xms256m -Xmx512m
6.在path用户环境变量中(如果没有path用户变量,请新增一个),加入maven的bin目录,以便在命令行中能直接输入命令来调用maven,而不用输入繁琐的绝对路径。这里加上:%M2%
7.确保jdk配置正确
8.打开dos窗口,输入:mvn --versoin,如果输入maven的版本信息,表示安装成功。
如果没有问题,则maven成功安装,无需再做配置了。如果必须个性化配置,可以通过安装目录下的conf/settings.xml文件来配置。
创建一个工程:
1. 在本地建一个目录,用来存放该工程。这里创建目录e:\Maven\MavenTeset。
2. 打开cmd,进入到该目录,然后运行命令:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=fals
注:刚装完maven,第一次运行上面命令的时候需要一定的时间,因为maven会下载一些插件和其他文件到你本地的repository(这里我的为:c:\Documents and Settings\Administrator\.m2\repository\)。上面的命令可能需要运行多次,直到运行成功(有提示:build success等),因为下载有时候会报服务器超时,这个时候必须再运行一次上面的命令。
3. 第2步运行成功后,会在当前目录e:\Maven\MavenTeset下自动建立一个my-app目录,和上面命令中artifactId参数指定的名字相同。
4. 进入目录 cd my-app,你会发现有如下的工程结构:
my-app |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.javasrc/main/java目录包含工程的源文件,src/test/java目录包含工程的测试代码。pom.xml是该工程的POM,它的内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
第2步执行的命令做了些什么呢?
它执行了maven的目标archetype:generate,并且传入了很多参数。这里archetype是一个插件,它包含了很多目标(goal),generate就是其中的一个。插件(plugin)其实就相当于目标的集合(collection)。在maven中,还有一个叫做phase的东西,maven的构建生命周期(build lifecycle)里包含很多phase,每个phase又包含有很多目标(goal)。phase后文还会提到。
这里的generate目标是做什么的呢?就如上面看到的工程结构,它生成工程的源码和测试代码,并且生成了相应的pom.xml。
5. 接下来,构建该工程。进入my-app目录,然后执行:mvn package。同样需要等待一段时间,它需要下载该工程依赖的一些库,如pom.xml中dependency指定的junit库。
6. 构建完成之后,在当前目录下,会生成target文件夹,该目录下有一个my-app-1.0-SNAPSHOT.jar包,即该工程的打包文件。
第5步的命令mvn package中的package就是一个phase,它是构建生命周期(build lifecycle)中的一个步骤,构建生命周期包含很多步骤,可以看成步骤的集合,该集合中的步骤是有一定顺序的。当我们通过mvn命令给定一个phase的时候,maven会按顺序执行集合(build lifecycle)中phase,一直到mvn指定的phase为止(包含指定的phase)。比如,执行mvn compile,这maven会执行如下phase:
7. 现在,可以测试一下第6步编译、打包生成的jar包了。在my-app目录下执行如下命令:
- validate
- generate-sources
- process-sources
- generate-resources
- process-resources
- compile
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
然后会输出:Hello World!
再对phase做个介绍。
在maven的构建生命周期中,主要有如下几个默认phase:
- validate: validate the project is correct and all necessary information is available
- compile: compile the source code of the project
- test: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
- package: take the compiled code and package it in its distributable format, such as a JAR.
- integration-test: process and deploy the package if necessary into an environment where integration tests can be run
- verify: run any checks to verify the package is valid and meets quality criteria
- install: install the package into the local repository, for use as a dependency in other projects locally
- deploy: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
maven还有两个phase上面没有列出,它们是:
- clean: cleans up artifacts created by prior builds
- site: generates site documentation for this project
执行完后,会在target下生成目录site,进去打开index.html,有点意外啊,看起来相当不错~
貌似写的有点混乱,哎。。。逐渐提高吧