You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Apache Wiki <wi...@apache.org> on 2008/12/11 14:50:57 UTC

[Maven Wiki] Update of "Chinese Maven In Five Minutes" by Iacob

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Maven Wiki" for change notification.

The following page has been changed by Iacob:
http://wiki.apache.org/maven/Chinese_Maven_In_Five_Minutes

New page:

Maven五分钟入门

安装

Maven是一款Java工具,如果要进行下面的步骤必须安装Java。

首先下载Maven并且按照步骤将其安装,然後,在终端或命令提示符下输入:

mvn --version

它会打印出所安装的Maven的版本,例如:

Maven version: 2.0.8
Java version: 1.5.0_12
OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows"

根据网络设置或许会需要一些其他的设置。如需要的话请参看 Maven配置指南。

建立一个工程

在命令行上,运行如下的Maven目标(Goal):

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

如果Maven是全新安装的,第一次运行时会花费一些时间,因为Maven会下载最新的套件(插件包和其他文件)到本地,也有可能运行几次命令才能成功,因为远程服务器会在下载完毕前超时。不过,有许多方法来解决这个问题。

你可能注意到create目标(Goal)创建了一个与套件名(artifactId)同名的目录,现在切入这个目录。

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工程的核心配置,这个文件包含了按照需要建立(build)工程时需要的大部分信息,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>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</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>

上面步骤做了什么?

刚刚执行了Maven的目标(Goal)archetype:create, 而且向这个目标传递了一些参数。前缀``archetype''是包含此目标的插件的名称。如果对Ant熟悉,你可以认为它和Ant中的"任务"(task)相似。这个目标创建了基于这个archetype的一个普通的工程。...。例如jboss-maven-plugin的作用是``处理一些jboss的事务''。

编译这个工程

mvn package

命令行会打印出许多动作,结尾部分如下:

 ...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------

和执行的第一个命令(archetype:create)不同,你可能注意到第二个命令只包含一个单词 -- package。与目标(Goal)不同,这是一个``阶段''(phase)。阶段是建立过程的生命周期中的一个步骤,建立过程包含一系列的步骤。当给出一个阶段时,Maven会顺序执行每个阶段直到到达给出的那个。例如,如果我们执行编译(compile)阶段,实际被执行的阶段是:

   1. validate
   2. generate-sources
   3. process-sources
   4. generate-resources
   5. process-resources
   6. compile

可以使用下面的命令测试刚刚编译并且打包的JAR文件:

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

它会立即给出:

Hello World!

运行Maven工具

Maven包含的各个阶段

全部项目的列表会很长,这里列出的是需要执行的最常见的默认生命周期。

    * validate: 检验工程是否正确,是否给出了所有必要的信息。
    * compile: 编译工程的源代码
    * test: 使用合适的单元测试框架测试编译过的源代码。此处的测试步骤不需将编译得到的字节码打包和部署。
    * package: 将编译得到的字节码打包成可以用来将其发布(distribute)的格式,比如JAR。
    * integration-test: 如果需要将这个包放到特定环境中进行集成测试则处理并部署此包。
    * verify:  运行检验程序确认这个包可用且满足合格条件。
    * install: 将此包安装到本地套件库,以便其他工程可以在本地通过依赖关系使用此包。
    * deploy: 发布到集成或发布环境,拷贝最终完成的包到远程套件库,以便和其他开发者或工程共享。

还有两个Maven生命周期没有在上文列出,是:

    * clean: 清除被先前建立过程创建的套件。

    * site: 为这个工程建立网站文档。

阶段实际上是被映射到底层的目标上。每个阶段按照包的类型执行目标。例如,在工程的类型是JAR时执行jar:jar,执行war:war时的工程类型是 - 你已经猜到了 - 是WAR。

记住有趣的一点是阶段和目标会可以顺序执行。

mvn clean dependency:copy-dependencies package

这个命令会清理工程,拷贝依赖的内容,并且给这个工程打包(会执行所有的阶段直到到达package阶段)。

生成站点

mvn site

这个阶段会基于工程的工程对象模型(POM)生成一个网站,在这个网站上可以查看到在目标或站点下生成的文档。

结束语

我们希望这段简短的介绍能够使您对Maven的灵活性开始感兴趣,不过这是一篇十分简练的快速入门指南。现在您可以准备了解关於刚刚执行的那些动作的具体信息,请参看 Maven入门指南。

© 2002-2008 The Apache Software Foundation

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org