Maven环境搭建及5分钟体验

环境搭建(这里只讲linux下,windows下同理,只是环境变量配置方式不同)

  • 首先到maven的官网下载对应的二进制.tar.gz包,将对应的包解压到你指定的目录下
  • 配置环境变量,在/etc/profile文件最后一行后面添加路径,例如我的为:
#maven path configuration by eric
export PATH=/home/eric/software/apache-maven-3.5.0/bin/:$PATH

你只需要将路径替换为你的路径即可

  • 退出shell,重新登入即可生效
  • 在shell中 输入mvn -v ,若是弹出与如下类似的信息则说明配置成功
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"

Maven in 5 Minutes

以下内容来自于maven官网的翻译,只对其中重要的进行翻译,无关内容跳过。但每一步亲自运行过(最好不要使用JDK9,因为JDK9的一些新特性会导致运行时报错,这些错误也可以纠正,但是作为新手就不要难为自己了)。

安装

已经讲过,这里就不赘述

创建一个工程

你需要一个目录存储你的工程,你可以选择新建一个目录或者在那个目录中打开shell。在你的命令行中执行以下maven goal:

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

如果你是刚刚才安装的maven,这可能要执行一会(实际执行了挺久)。这是因为maven正在下载最新的模块(plugin jars and other files)到你的本地仓库中。你可以能要执行好多遍这个命令才会最终成功。这是因为在你完全下载号之前远程服务器可能超时,因此下载会失败,但是不用担心,总会成功。

你会注意到generate 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文件(是maven的核心配置文件),POM

The 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>

刚刚做了什么?

你执行了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] ------------------------------------------------------------------------

你或许注意到第二个命令一个单独的命令package, 与第一个不同。这条命令不是一个goal, 这是一个phase。一个phase是编译生命周期的一个步骤,编译生命周期是有序的phase排列。当给出一个phase,maven将会执行每一个phase直到包含给定的phase。例如,如果我们执行compile phase, 被执行phase实际上如下:

  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 Phases

尽管很少有一个综合性的清单,如下是一些最常用的phases执行的生命周期

  • validate:确认这个工程是正确的,并且所有的必要信息是可以获取到的。
  • compile:编译工程的源文件
  • test:使用一个合适的测试框架测试经过编译的源文件。这些测试不要求源代码被打包或部署
  • package:获取编译的源文件,并且以发布格式打包,例如JAR
  • integration-test:如果有必要话,执行和部署这个包到集成测试可以被执行的环境
  • verify:运行所有核查确保该包是有效的,同时也达到了质量标准
  • install:安装这个包到本地仓库,作为其他本地仓库的依赖
  • deploy:做一个集成或者发布环境,复制最终的包到远端仓库与其他开发者或工程共享
    有两个不在以上默认列表的maven声明周期,分别是:
  • clean:清除由前面的编译过程产生的文件
  • site:为这个工程生成文档
    Phases通常与goal有关。明确的goal所执行的phase是依赖于工程的包的类型。例如,package执行jar:jar如果这个工程的类型是JAR,执行war:war如果 这个工程的类型是WAR。
    一个有趣的要提的注意点是phases和goals是可以以一定顺序执行的。
mvn clean dependency:copy-dependencies package

这个命令将会清除这个工程,复制依赖,打包工程(当然也要执行所有直到package的phase)。

Generating the Site

mvn site

这个phase将会产生一个依赖于项目POM配置的文档。你可以查阅在target/site下产生的文档。

结论

我们希望这个速览可以激发你对maven丰富的功能探索的兴趣。记住这是一个简要的速览。接下来需要详细了解更多细节,请访问maven教程

猜你喜欢

转载自blog.csdn.net/wareric/article/details/78170485
今日推荐