原文地址:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
预先说明
你必须对如何在计算机上安装软件有所了解,如果你不知道如何安装,请你询问同一个办公室或学校的朋友,也可以花钱让别人教你,Maven的邮箱绝对不是你解决问题最好的地方。
安装
Maven是一个用于构建java(或其他)项目的命令行工具.Apache的Maven包是一个预编译好的ZIP包,不用再去安装十分方便。他是用纯java编写的一个工具,所以为了让他正常工作,你必须先配好了JDK环境,JDK配置环境就不细说了。
首先,下载Maven(网速慢可以下我csdn上的,下载链接) 然后按照我写的 环境配置指导 配好环境.然后,在终端或者命令行中键入:
mvn --version
输出应该如下:
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Maven home: D:\apache-maven-3.0.5\bin\..
Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
Java home: C:\Program Files\Java\jdk1.6.0_25\jre
Default locale: nl_NL, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
如果因办公网络环境的需要,你可能需要一些额外的配置,确实需要请点击
这里
。
创建一个project
打开终端或者命令行,键入:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
注意:如果你是才装好Maven,可能第一次运行时需要等待一段时间,如图。
这是因为Maven需要下载最近的插件jars或者其他文件到你的本地仓库。再你成功之前或许需要运行很多次,因为完全下载请求可能会超时,但是别担心,多试几次总是会下完的。
然后你会发现创建成功了,进入project目录
cd my-app
在这个目录下,你会看到如下
标准的工程结构:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
这个 src/main/java 目录包含了项目的源代码, src/test/java 目录包含了测试代码,pom.xml 文件是项目的Project Object Model,或称POM。
POM
pom.xml 文件在一个项目的Maven配置中是核心,他虽然是个单文件,但是包含了一个项目的绝大多数的信息,这信息就是你想构建项目方式的信息。POM很大而且因为他的复杂性让人恐惧,但是我们依旧可以高效的使用它即使我们不了解他的全部。项目的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
我需要做什么?
你可以通过一个goal(执行任务的最小单元) archetype:generate(按原型生成) 运行Maven,并且可以向这个goal中加参数.这个前缀 archetype 是一个包含该goal的 插件 .如果你对Ant很熟,你可以把他理解成一个task,这个goal会基于一个 archetype 创建一个简单工程。这个插件就是一个满足一般需求的goal集,就像可以解决不同jboss项的 jboss-maven-plugin 一样。
构建项目
mvn package
这行命令会输出不同的信息,并且像这样结束:
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Jul 07 21:34:52 CEST 2011
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------
不像第一个goal(archetype:generate),你可能注意到了一个单词-package。是的,他不是一个最小单元命令,而是一个phase(任务单元,可以绑定多个goals),他是 build lifecycle 的一部分(可以把lifecycle理解成 总任务,phase就是总任务分出来的一个个子任务)。bulid lifecycle中的phases是被规格化了的,当一个phase被给出,Maven会依次执行每个phase并且包括第一个。比如说,如果我们执行compile任务单元,这些phases会被依次执行:
validate
generate-sources
process-sources
generate-resources
process-resources
compile
你可以用如下命令测试新编译打包的JAR:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
然后屏幕会输出一行经典的:
Hello World!
运行Maven工具箱
Maven Phases
虽然很难罗列完全,但是最常用的默认lifecycle phases都在下面了:
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 lifecycles,他们是:
clean: cleans up artifacts created by prior builds
site: generates site documentation for this project
一个有趣的事情值得你们注意,phases和goals可以会被依次执行:
mvn clean dependency:copy-dependencies package
这个命令会清理掉项目、相关依赖性并且打包好项目(当然会运行所有package的相关phases).
生成site
mvn site
这个phase会基于项目的pom生成一个site。你可以在
target/site里查看他的文件。