5分钟掌握Maven

来源:Maven in 5 Minutes
翻译: Ivan  @愤怒的死胖子
转载请注明

前提

你必须知道如何在你的电脑上安装Maven。如果你不知道,请教下办公室里或学校里的其他人,或者雇一个人来解释。Maven的邮件列表并不是询问这个问题的最佳场所。

Installation

Maven是一个Java工具,所以你必须安装了Java才能继续。
首先,下载Maven并参照安装指南来安装。之后,在终端或者命令行输入以下命令

mvn --version

这将显示出你安装的Maven的版本,例如:

Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: D:\apache-maven-3.0.3\bin\..
Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
Java home: E:\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"

你可能需要一些额外的配置,这取决于你的网络设置情况。如果需要的话请参照Maven配置指南

如果你使用的是Windows,你应该看一看Windows前置条件以确保你准备好了在Windows上使用Maven。

创建一个项目

你需要一个目录来存放项目,创建一个目录并在那里打开命令行或终端,执行以下的Maven命令:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

如果你是新安装的Maven,第一次运行时将会持续一段时间。因为Maven会下载最近的包(插件和其它文件)至你的本地仓库。你可能需要执行好几次直到它成功,因为你的下载还未完成,而远程服务器可能已经超时了。别担心,有很多办法可以解决这个问题。
你可能会注意到创建命令创建了一个与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中项目配置的核心。它是一个单独的配置文件,包含了按照所需的特定方式/方法来构建项目所应有的主要信息。POM相当巨大而且复杂度会令人望而生怯,但是现在我们还不需要理解所有复杂项目来高效地使用Maven。这个项目的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>
我刚才做了什么?

你执行了Maven的目标(goal)archetype:generate并附加了很多参数。前缀archetype是包含了目标(goal)的插件(plugin)。如果你熟悉Ant也可以将其理解为task。这个目标(goal)创建了一个基于archetype的简单项目。对于目前来说,插件(plugin)只要理解为一系列达到一般目的的目标(goal)集合就可以了。例如jboss-maven-plugin的目的就是“处理大量jboss项”

项目构建
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] ------------------------------------------------------------------------

你可能已经注意到,与第一个执行的命令不同(archetype:generate),第二个命令只是一个单独的字 - package。与目标(goal)相比,这只是一个步骤phase)。步骤(phase)是构建周期中的一步,构建周期即为一组有序的步骤(phase)。当指定了一个步骤(phase)后,Maven将会执行这个步骤之前的所有步骤(phase),然后再执行这个步骤(phase)。例如,如果我们执行编译(compile)这个步骤,实际得到执行的步骤(phase)为:

  1. 验证
  2. 产生代码
  3. 处理代码
  4. 产生资源
  5. 处理资源
  6. 编译

你可以用以下命令测试新编译和打包的JAR:

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

显示出经典的:

Hello World!

运行Maven工具

Maven步骤(phase)

尽管很难有一个囊括所有的列表,以下列举了默认的周期中最常被执行的步骤(phase)。

  • 验证: 验证项目是否正确,所有必需的信息是否完备。
  • 编译: 编译项目的源代码
  • 测试: 使用合适的单元测试框架测试编译的代码。这些测试不需要代码被打包或者部署。
  • 打包: 使用编译好的代码打包至可分发的格式,例如JAR。
  • 集成测试: 处理并部署至环境中,运行集成测试。
  • 验证: 运行检查确保程序包可用并符合质量标准。
  • 安装: 安装程序包至本地仓库,以便本地其它项目使用。
  • 部署: 在集成或者发布环境中完成,复制最终程序包至远程仓库,以与其它开发人员和项目共享。

还有两个默认列表以外的Maven周期,他们是:

  • clean: 清理上一次构建创造的文件。
  • site: 创建项目的site文档。

步骤(phase)实际上被映射到了底层的目标(goal)上。每一个步骤(phase)所执行的特定目标(goal)取决于这个项目的包的类型。例如,当项目类型是JAR时执行jar:jar,而当项目类型是WAR时执行war:war。

一个值得注意的地方是步骤(phase)和目标(goal)可能会按照顺序执行。

mvn clean dependency:copy-dependencies package

这个命令会清理项目,复制依赖,打包项目(当然也包括执行打包之前的所有步骤(phase))。

产生Site
mvn site

这个步骤(phase)将会产生一个基于项目pom文件信息的site。你可以看一看target/site下产生的文档。

总结

我们希望快速的梗概能够使你对Maven的多元化有兴趣。请注意这是一个缩减了的快速开始指南。现在你已经可以开始学习刚才所有操作中更为复杂的细节了。请参考Maven Getting Started Guide

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值