5分钟学懂Maven(step by step)

原文地址: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映射的,具体的goals运行的每个phase取决于项目的包类型。比如,package运行jar:jar如果项目类型是一个JAR,或者war:war如果一个包类型是一个WAR。


一个有趣的事情值得你们注意,phases和goals可以会被依次执行:

mvn clean dependency:copy-dependencies package
这个命令会清理掉项目、相关依赖性并且打包好项目(当然会运行所有package的相关phases).


生成site

mvn site
这个phase会基于项目的pom生成一个site。你可以在 target/site里查看他的文件。





发布了89 篇原创文章 · 获赞 37 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/u012891055/article/details/50043015
今日推荐