zoukankan      html  css  js  c++  java
  • maven使用说明

    • 前提条件

        你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。

    • 安装Maven

        Maven是基于java的工具,所以你的电脑上必须安装了java环境。

        首先,下载Maven和按照安装说明进行操作。然后,在终端或在命令行中键入以下命令:

    1
    mvn --version

       终端或命令行中应该打印出本机所安装的Maven的版本,如下:

    1
    2
    3
    4
    5
    6
    Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800)
    Maven home: /usr/local/apache-maven-3.1.1
    Java version: 1.6.0_65, vendor: Apple Inc.
    Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    Default locale: zh_CN, platform encoding: EUC_CN
    OS name: "mac os x", version: "10.9.1", arch: "x86_64", family: "mac"

      如果是Windows环境,格式应该类似这样:

    1
    2
    3
    4
    5
    6
    Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
    Maven home: D:apache-maven-3.0.5in..
    Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
    Java home: C:Program FilesJavajdk1.6.0_25jre
    Default locale: nl_NL, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

      根据你的网络设置,您可能需要一些额外的设置。如果需要设置,请参考Maven配置向导

      如果使用的是Windows环境 ,你应该看看Windows安装前提条件,来确保能够在Windows上使用Maven。

    • 创建Maven项目

        首先,创建存放项目的目录(例如d:maven_proj或者/Users/xxx/maven_proj),打开终端或者命令行,切换到该目录下,执行以下Maven命令:

    1
    mvn archetype:generate -DgroupId=com.oschina.test -DartifactId=my-maven-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

        如果是刚安装了Maven的,第一次运行可能需要一段时间。这是因为Maven正在从网上下载大部分最近的artifacts (plugin jars and other files)到你的本地仓库。可能需要执行几次该命令才能成功。这是因为在下载完成之前,远程服务器的连接可能超时。

        输出的命令行可能类似:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    [WARNING] 
    [WARNING] Some problems were encountered while building the effective settings
    [WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>   -->   <activeProfile>... @278:18)  @ /usr/local/apache-maven-3.1.1/conf/settings.xml, line 278, column 18
    [WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>   -->   <activeProfile>... @278:18)  @ /Users/flanliulf/.m2/settings.xml, line 278, column 18
    [WARNING] 
    [INFO] Scanning for projects...
    Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml
    Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml (701 B at 0.3 KB/sec)
    Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.2/maven-archetype-plugin-2.2.pom
    Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.2/maven-archetype-plugin-2.2.pom (8 KB at 3.4 KB/sec)
    ....(此处省略)
    Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.pom (703 B at 1.1 KB/sec)
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: groupId, Value: com.oschina.test
    [INFO] Parameter: packageName, Value: com.oschina.test
    [INFO] Parameter: package, Value: com.oschina.test
    [INFO] Parameter: artifactId, Value: my-maven-test
    [INFO] Parameter: basedir, Value: /Users/flanliulf/maven-proj
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] project created from Old (1.x) Archetype in dir/Users/flanliulf/maven-proj/my-maven-test
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2:51.915s
    [INFO] Finished at: Thu Jan 23 14:59:17 CST 2014
    [INFO] Final Memory: 9M/81M
    [INFO] ------------------------------------------------------------------------

        当输出了“BUILD SUCCESS”时表示项目创建成功了,你会发现,生成的目标创建一个目录,并给出了artifactId的相同的名称。进入这个目录。

    1
    cd my-maven-test

        该项目的目录结构如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    my-maven-test
    |-- pom.xml
    `-- src
        |-- main
        |   `-- java
        |       `-- com
        |           `-- oschina
        |               `-- test
        |                   `-- App.java
        `-- test
            `-- java
                `-- com
                    `-- oschina
                        `-- test
                            `-- AppTest.java

        在src/main/java目录中包含了项目的源代码,src/test/java目录中包含了项目的测试代码,pom.xml文件是该项目的项目对象模型(Project Object Model),通常称为POM文件。

        POM

        pom.xml文件是一个Maven项目的核心配置文件。它是包含了大部分你期望如何build一个项目所需信息的一个配置文件。POM比较庞大而且比较复杂,但是即使没有完全理解,我们也能够有效地使用它。该项目的POM如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.oschina.test</groupId>
      <artifactId>my-maven-test</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>my-maven-test</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>
        What did I just do?

        你执行了Maven的目标(goal) archetype:generate,并添加了一系列的参数。前缀archetype是包含了目标的插件。如果你熟悉Ant ,你可以设想这类似于Ant中的任务(task)。这个目标创建了一个基于原型(archetype)的简单项目。我只想说,一个插件是一系列拥有共同目的(general common purpose)的目标的集合。例如,jboss-maven-plugin插件,其目的是“处理各种JBoss项目(deal with various jboss items)” 。

        Build the Project   
    1
    mvn package

        命令行中将打印编译时的各种信息,输出了“BUILD SUCCESS”时表示项目编译成功了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    [WARNING] 
    [WARNING] Some problems were encountered while building the effective settings
    [WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>   -->   <activeProfile>... @278:18)  @ /usr/local/apache-maven-3.1.1/conf/settings.xml, line 278, column 18
    [WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>   -->   <activeProfile>... @278:18)  @ /Users/flanliulf/.m2/settings.xml, line 278, column 18
    [WARNING] 
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building my-maven-test 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom
    Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom (8 KB at 1.0 KB/sec)
    。。。(省略)
    Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar (26 KB at 13.9 KB/sec)
     
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running com.oschina.test.AppTest
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
     
    Results :
     
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
     
    [INFO] 
    [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-maven-test ---
    Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom
    Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom (5 KB at 3.5 KB/sec)
    。。。(省略)
    Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar (181 KB at 32.7 KB/sec)
    [INFO] Building jar: /Users/flanliulf/maven-proj/my-maven-test/target/my-maven-test-1.0-SNAPSHOT.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1:42.914s
    [INFO] Finished at: Thu Jan 23 15:41:20 CST 2014
    [INFO] Final Memory: 11M/81M
    [INFO] ------------------------------------------------------------------------

        不同于执行的第一个命令(archetype:generate),你可能会注意到第二个是简单的一个字 - package。这不是一个目标(goal),这是一个阶段(phase)。 一个阶段是一个构建的生命周期build lifecycle)中的一步,一个构建的生命周期,可以看做是一系列阶段的有序集合。当指定了一个阶段时, Maven将顺序执行每个阶段。例如,如果我们执行编译(compile)阶段,实际被执行的各个阶段如下:

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

        你可以使用下面的命令来测试刚刚编辑和打包的jar:

    1
    java -cp target/my-maven-test-1.0-SNAPSHOT.jar com.oschina.test.App

        将会得到如下输出:

    1
    Hello World!
    • 运行Maven工具

        Maven常用阶段(phase)

        虽然几乎没有一个完整的清单,但是下面列出了一些经常执行的默认生命周期(default)中的阶段。

    • validate: 验证项目是否正确,所有必须的信息是否可用。

    • compile: 编译项目的主源码,一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

    • test: 使用单元测试框架对编译后的源码进行测试 , 测试代码不会被打包或部署。

    • package: 接受编译好的代码,打包成可发布的格式,如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: 将包安装到Maven本地仓库,供本地其他Maven项目使用。

    • deploy: 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

        还有值得注意的另外两个Maven的生命周期超出了上面的默认列表 ,它们是:

    • clean: 清理上一次构建生成的文件

    • site: 生成项目站点文档

        阶段实际上被映射到底层的目标。每个阶段执行的具体目标依赖于项目的包装类型。例如,如果项目类型是一个JAR的话,package 执行 jar:jar ,而如果项目类型是 WAR 的话,执行的是 war:war

        注意的是,阶段(phase)和目标(goal)可以顺序执行。

    1
    mvn clean dependency:copy-dependencies package

        此命令将清理项目(clean the project),拷贝依赖(copy dependencies)和打包项目(package the project,即执行所有阶段来打包) 。

        生成Site
    1
    mvn site

        此阶段根据项目的POM文件生成了一个site。你可以发现在target/site目录下生成了文档。

    • 结论

       这是一个非常简单的快速入门指南。如果想进一步深入理解相关内容,请参考 Maven Getting Started Guide

  • 相关阅读:
    [匈牙利] 洛谷 P2526 小狗散步
    [匈牙利] 洛谷 P1129 矩阵游戏
    [树形dp] Jzoj P5233 概率博弈
    [线段树] Jzoj P4231 寻找神格
    [状压dp][期望] 洛谷 P2473 奖励关
    [倍增][双向链表] Jzoj P3101 开车旅行
    [高精度][数学] Jzoj P3771 小Z的烦恼
    [并查集][排序] Jzoj P2940 生成输入数据
    [dfs][概率] Jzoj P2941 贿赂
    [权值线段树] Jzoj P4417 神奇的字符串
  • 原文地址:https://www.cnblogs.com/smiler158/p/3930064.html
Copyright © 2011-2022 走看看