英文原地址:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

一、前提

需要懂得如何在计算机上安装软件。

二、安装

1、maven是一个java工具,所以得首先安装java。

2、下载maven,并安装安装指南一步步安装(解压、配置环境变量)。

3、测试:运行:mvn --version

三、建立一个项目

1、首先建立一个目录用于存放maven项目,这里假设为d:\mavenspace。并切换到该目录。

2、运行下面的命令。(其中archetype是plugin,generate是plugin中的goal)

注:如果是第一次运行这个命令,速度可能较慢,因为要maven会根据依赖关系下载很多对应的jar包。

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

3、运行命令cd my-app进入到maven生成的目录,会发现src/main/java目录、src/test/java目录、pom.xml文件。

4、POM文件

该文件是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>

5、刚才我做了什么?
我们运行了maven目标archetype:generate并给命令传递了一些参数。前缀archetype 包含了目标。这个和Ant很像,可以想象成Ant的Task。这个目标根据原型创建了一个简单的项目。插件是为了一些共同的目标而由一组目标组成的。举例来说,jboss-maven-plugin就是为了处理“各种各样jboss相关的问题”。

6、构建这个项目

a、运行命令:mvn package
不像我们运行的第一个命令(archetype:generate),这个命令只有一个单词:package。这不是一个目标,是一个阶段(phase),也就是项目构建生命周期中的一个过程。构建生命周期是一组有序的阶段的序列。当给定了一个阶段,maven会执行这个序列中在该阶段之前的所有阶段,也包括给定的阶段。举例来说,当我们执行compile这个阶段时,实际上被执行的阶段是:

validate

generate-sources

process-sources

generate-resources

process-sources

compile

b、用下面命令测试该编译和打包了的jar,输出结果应该是:Hello World!

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

四、运行Maven工具

1、maven阶段(maven phases)

尽管是一个很复杂的列表,下面是最常见的构建过程中的阶段。

validate:

compile:

test:

package:

integration-test:

verify:

install:

deploy:

除了上面默认的列表,这里还有两个构建过程阶段。

clean:清除前面构建生成的制品。

site:为这个项目生成站点文档。

注:阶段(phases)一般都对于潜在的目标(goals)。每个阶段执行的目标是依赖于项目的打包类型。举例来说,如果项目类型是JAR则package这个阶段执行jar:jar这个目标,如果项目类型是WAR则执行的是war:war这个目标。

一个有趣的事情是阶段和目标可以在一个序列中被执行。

mvn clean dependency:copy-dependencies package

举例来说,以上命令会首先清除项目生成文件、复制依赖、然后打包项目(当然会执行所有阶段直到打包这个阶段)。

2、构建站点(generating the site)

命令是:mvn site

这个阶段会根据项目的pom生成一个站点。你可以在target/site目录下看到生成的文档。

五、结论

我们希望这个快速的预览激起了你对maven多样性的兴趣。注意这个一个节选的快速开始的手册。如果你想对刚才那些你执行的动作有更加全面的和详细的了解,请阅读maven开始后的手册。

5分钟学习maven的更多相关文章

  1. 5分钟学习maven(根据英文文档整理)

    英文原地址:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html 一.前提 需要懂得如何在计算机上安装软件 ...

  2. 几个学习Maven不错的网址

    几个学习Maven不错的网址:---------------------------------------------------1.Maven官方网站 http://maven.apache.or ...

  3. 五分钟学习React(三):纯HTML代码搭建React应用

    上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...

  4. 五分钟学习React(一): 什么是React

    在前端的世界里,我们要处理的文件不是太多,而是太少.每天开发项目将html.css.js.图片.字体文件都像大杂烩一般加载都网页上.当应用变得越来越臃肿的时候,会发现js用了那么多全局变量,css的继 ...

  5. 我的学习归纳方法(以学习Maven为例)

    以我的个人角度来看待学习这件长久的事,希望对你有帮助,也希望你能提一下你的意见 本文初衷 把自己模板化 以此篇为引,与同行沟通心得,所以在此严重要求如果你有对应的心得还请能回复下,真心感谢!(鞠躬) ...

  6. 学习Maven之Maven Surefire Plugin(JUnit篇)

    1.maven-surefire-plugin是个什么鬼? 如果你执行过mvn test或者执行其他maven命令时跑了测试用例,你就已经用过maven-surefire-plugin了.maven- ...

  7. 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)

    一.前言         早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基 ...

  8. 学习maven,看思维导图就够了

    一直在用 Mindjet MindManager和xmind 做思维导图.以前在用思维导图写读书笔记时,总是想要事无巨细地写清楚每个知识点,现在想来是事倍功半.思维导图应该是一个帮助我们梳理知识点.理 ...

  9. maven 学习---Maven Web应用

    本教程将教你如何管理使用Maven版本控制系统管理一个基于Web项目.在这里,将学习如何创建/构建/部署和运行Web应用程序: 创建Web应用程序 要创建一个简单的java web应用程序,我们将使用 ...

随机推荐

  1. Populating Next Right Pointers in Each Node II [Leetcode]

    Problem Description http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ ...

  2. DataTable常用操作

    添加列和行的三种方法(转载) 原文地址:http://www.cnblogs.com/jRoger/articles/1887581.html DataTable tblDatas =new Data ...

  3. 阮一峰:RSA算法原理(一)

    今天看到一篇好文章,关于加密算法,收藏了觉得不过瘾,还是自己贴一遍,也能加深一下印象. 原文链接:http://www.ruanyifeng.com/blog/2013/06/rsa_algorith ...

  4. #ifdef __cplusplus extern "C"

    #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif首先,__cplusplus是cp ...

  5. Java多线程-新特性-有返回值的线程

    在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了. 现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现 ...

  6. 230. Kth Smallest Element in a BST ——迭代本质:a=xx1 while some_condition: a=xx2

    Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...

  7. c++实现之 -- 汉语词语的简单处理

    好了,我们现在已经会怎样读入了,然后就是研究一下如何存储等一些细节上的的问题了. 首先,比较函数是不能传入char*的地址的,但是可以接受一个string类. 然而,如果是两个比较长的string类, ...

  8. c++实现之 -- 文章TF-IDF值的计算

    首先,是关键词的选取: 好吧这个我这模型实在是太简单了,但还是讲一讲比较好呢... 我们现在手头有的是一堆百度百科词条w的DF(w, c)值,c是整个百科词条...原因是...方便嘛~(而且人家现成的 ...

  9. dw添加emmet

    1.emmet下载Emmet.zxp 2.怎么在dw中设置(命令->emmet->Expand Abbreviation)中查看使用emmet的快捷键,如果跟别人快捷键重合了 3.编辑-& ...

  10. 你所知道的Java单例模式并不是单例模式

    当我们搜索单例模式的时候,能看到很多例子,什么懒汉式.饿汉式,大概如下: public class Singleton { private static Singleton instance=null ...