1. 下载并解压Maven;Maven下载页2. 将环境变量M2_HOME设置为解压后的目录;

3. 将M2环境变量设置为M2_HOME/bin(在Windows上是%M2_HOME%/bin,在Unix上是$M2_HOME/bin);
4. 将M2添加到PATH环境变量中(Windows上是%M2%,Unix上是$M2);
 注意:Maven运行需要Java环境,因此也需要安装Java,Java版本1.5及以上;

POM文件
当你执行一条Maven命令的时候,你会传入一个pom文件(项目对象模型)。Maven会在该pom文件描述的资源上执行该命令。用以描述项目用到的资源,包括源代码目录、测试代码目录等的位置,以及项目依赖的外部jar包。

构建生命周期、阶段和目标(相当一系列操作分组,组之间可独立和包含)
 
Maven的构建过程被分解为构建生命周期、阶段和目标。一个构建周期由一系列的构建阶段组成,每一个构建阶段由一系列的目标组成。
 依赖和仓库
 
依赖是你的项目用到的jar文件(java库)。如果在本地仓库中不存在该依赖,则Maven会从中央仓库程or远程仓库下载并放到本地仓库。
 插件(相当于 clean install)
 
构建插件可以增加额外的构建目标。如果Maven标准的构建阶段和目标无法满足项目构建的需求,可以在POM文件里增加插件。

详解: 
 POM文件即pom.xml,应该放在项目的根目录下。
 每一个项目都有一个POM文件。一个项目如果分为多个子项目,一般来讲,父项目有一个POM文件,每一个子项目都有一个POM文件。在这种结构下,既可以一步构建整个项目,也可以各个子项目分开构建。

<groupId>com.jenkov</groupId>
<artifactId>java-web-crawler</artifactId>
<version>1.0.0</version>
 
 

*groupId” 是一个组织或者项目(比如开源项目)的唯一ID。大多数情况下使用项目的java包的根名称作为group ID。该项目将会位于Maven仓库目录中com/jenkov中。
 *artifactId* 正在构建的项目的名称。artifact ID是Maven仓库中group ID目录下的子目录名。artifact ID也是构建完项目后生成的jar包的文件名的一部分。
 *versionId* 项目的版本号。 版本号是artifact ID目录下的子目录名。版本号也用作构建结果名称的一部分。jar包文件名的一部分

上文中的groupId,artifactId和version属性,在项目构建后会生成一个jar文件,位于Maven仓库的如下路径中(目录和文件名):MAVEN_REPO/com/jenkov/java-web-crawler/1.0.0/java-web-crawler-1.0.0.jar

Maven有两个配置文件。配置文件里的设置,对所有的pom文件都是有效的。比如,你可以配置:
本地仓库的路径;当前的编译配置选项等等

配置文件名为settings.xml,两个配置文件分别为:
+ Maven安装目录中:$M2_HOME/conf/settings.xml
 + 用户主目录中:${user.home}/.m2/settings.xml
 如果两个文件都存在,则用户目录下的配置会覆盖Maven安装目录中的配置。

让Maven跑起来
 mvn install
 该命令执行`install`阶段(是默认构建阶段的一部分),编译项目,将打包的JAR文件复制到本地的Maven仓库。事实上,该命令在执行install之前,会执行在构建周期序列中位于install之前的所有阶段。

执行多个构建周期或阶段,如:

mvn clean install

该命令首先执行clean构建周期,删除Maven输出目录中已编译的类文件,然后执行install构建阶段。

也可以执行一个Maven目标(构建阶段的一部分),将构建阶段与目标名以冒号(:)相连,作为参数一起传给Maven命令。例如:

mvn dependency:copy-dependencies

该命令执行`dependency`构建阶段中的`copy-dependencies`目标。

依赖几种方式:

1. Maven内嵌有依赖管理的功能。你只需要在pom文件里指定依赖jar包的名称、版本号,Maven会自动下载并放到你的Maven本地仓库中。如果这些外部jar包依赖了其它的库,它们也会被下载到你的Maven本地仓库。在pom文件的dependencies属性中指定项目依赖:

 <dependencies>
            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>1.7.1</version>
            </dependency>
            
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
 

如果本地仓库中已经有了这两个依赖,Maven就不会去下载了。只有本地仓库中没有的依赖才会被下载。
2.指定的依赖在Maven的中央仓库里没有。你可以直接下载这些依赖,然后放到Maven的本地仓库。这些依赖必须放到与groupId、 artifactId和version匹配的子目录中。上面示例中的两个依赖将会被放到以下子目录中:
MAVEN_REPOSITORY_ROOT/junit/junit/4.8.1
MAVEN_REPOSITORY_ROOT/org/jsoup/jsoup/1.7.1
3.外部依赖指的是不在Maven的仓库(包括本地仓库、中央仓库和远程仓库)中的依赖(jar包)。

<dependency>
  <groupId>mydependency</groupId>
  <artifactId>mydependency</artifactId>
  <scope>system</scope>
  <version>1.0</version>
  <systemPath>具体路径\war\WEB-INF\lib\mydependency.jar</systemPath>
</dependency>  
 

4.快照依赖指的是那些还在开发中的依赖(jar包)。与其经常地更新版本号来获取最新版本,不如你直接依赖项目的快照版本。快照版本的每一个build版本都会被下载到本地仓库,即使该快照版本已经在本地仓库了。
(在pom文件的最开头(设置groupId和artifactId的地方),在版本号后追加-SNAPSHOT,则告诉Maven你的项目是一个快照版本。如:<version>1.0-SNAPSHOT</version> 应该是快照项目每次编译产生一个最新快照)
 在配置依赖时,在依赖项目的版本号后追加-SNAPSHOT表明依赖的是一个快照版本。

Maven仓库设置:
Maven根据顺序去仓库中搜索依赖。首先是本地仓库,然后是中央仓库,最后,如果pom文件中配置了远程仓库,则会去远程仓库中查找。

本地仓库

本地仓库就是开发者电脑上的一个目录。该仓库包含了Maven下载的所有依赖。一般来讲,一个本地仓库为多个不同的项目服务。因此,Maven只需下载一次,即使有多个项目都依赖它(如junit)。仓库默认在你本机的用户目录下。可以在配置文件
 (user-home/.m2/settings.xml)中修改本地仓库的路径:

<settings>
    <localRepository>
        d:\data\java\products\maven\repository
    </localRepository>
</settings>
 

中央仓库

Maven的中央仓库由Maven社区提供。默认情况下,所有不在本地仓库中的依赖都会去这个中央仓库查找。然后Maven会将这些依赖下载到你的本地仓库。访问中央仓库不需要做额外的配置。

远程仓库

远程仓库一般用于放置组织内部的项目,该项目由多个项目共享。远程仓库中的依赖也会被Maven下载到本地仓库中。可以在pom文件里配置远程仓库。

<repositories>
   <repository>
       <id>jenkov.code</id>
       <url>http://maven.jenkov.com/maven2/lib</url>
   </repository>
</repositories>
 
 
Maven有三个内嵌的构建生命周期: 
 default生命期关注的是项目的编译和打包。clean生命期关注的是从输出目录中删掉临时文件,包括自动生成的源文件、编译后的类文件,之前版本的jar文件等。site生命期关注的是为项目生成文档。实际上,site可以使用文档为项目生成一个完整的网站。
 default生命期更多的关注于构建代码。由于你不能直接执行default生命期,你需要执行其中一个构建阶段或者构建目标。default生命期包含了相当多的构建阶段和目标,最常用的构建阶段有: 

构建阶段 描述
validate 验证项目的正确性,以及所有必需的信息都是否都存在。同时也会确认项目的依赖是否都下载完毕。
compile 编译项目的源代码test 选择合适的单元测试框架,对编译后的源码执行测试;这些测试不需要代码被打包或者部署。
package 将编译后的代码以可分配的形式打包,如Jar包。
install 将项目打包后安装到本地仓库,可以作为其它项目的本地依赖。
deploy 将最终的包复制到远程仓库,与其它开发者和项目共享。

Archetype

可以讲Archetype理解成Maven项目的模板,例如maven-archetype-quickstart就是最简单的Maven项目模板,只需提供基本的元素,如groupId,artifactId,version等,它就能生成项目的基本结构及POM文件。

Maven Archetype Plugin

使用Archetype的一般步骤

  • 命令——mvn archetype:generate
  • 输入命令后,Archetype插件会输出一个Archetype列表供用户选择;选择自己想要使用的Archetype,输入对应编号
  • 提示输入一些基本参数,如groupId,artifactId,version,package等
  • Archetype插件生成项目骨架

常用Archetype

maven-archetype-quickstart

默认的Archetype,基本内容包括:

  • 一个包含junit依赖声明的pom.xml
  • src/main/java主代码目录及一个名为App的类
  • src/test/java测试代码目录及一个名为AppTest的测试用例

maven-archetype-webapp

一个最简单的Maven war项目模板,当需要快速创建一个Web应用的时候可以使用它。生成的项目内容包括:

  • 一个packaging为war且带有junit依赖声明的pom.xml
  • src/main/webapp/目录
  • src/main/webapp/index.jsp文件
  • src/main/webapp/WEB-INF/web.xml文件

创建自己的Archetype

Archetype Catalog

Catalog用来指定maven-archetype-plugin读取archetype-catalog.xml文件的位置:

  • internal——maven-archetype-plugin内置的
  • local——本地的,位置为~/.m2/archetype-catalog.xml
  • remote——指向Maven中央仓库的Catalog
  • file://
  • http://

maven概念的更多相关文章

  1. maven入门概念及使用

    Maven 一.Maven概念 1.maven是什么:Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本.构建.输出物管理.依赖关系.文档和构建结果.项目关系.移植性管理 ...

  2. 基于分布式、服务化的maven项目文件规划

    引言 此文不是纯粹介绍maven概念,而是介绍一个具体的maven项目文件规划 这个规划可能适合于研发比较复杂的业务,这些业务有分布式和服务化的需要. 这个规划能够解决因为分布式和服务化要求而引起的项 ...

  3. JAVA基础-----Maven项目的搭建

    Maven项目的搭建 一.前言 maven官网:http://maven.apache.org/, 文章简介:本文章从三个模块来了解Maven,分别是 Maven的基本概念~, Maven项目的安装和 ...

  4. 将Gradle项目发布到Jcenter和Maven Central

    Jcenter和Maven Central 为了方便我们理解Android studio是如何帮助我们获取开源库的,我们需要理清几个概念.Apache Maven是Apache开发的一个工具,提供了用 ...

  5. Maven的基础了解与使用

    目录 Maven的介绍: 什么是Maven: 为什么要学习maven? 安装与配置: 下载: 配置环境变量 测试安装结果: Maven概念: 坐标 仓库 入门示例 创建maven工程: 添加依赖 Ma ...

  6. Build Tool/Maven, Gradle

    一.Build Tool 1.什么是Build Tool build tool是可以自动由源代码创建可执行的应用程序的程序. Building 包括编译.链接和打包代码成一个可用的或可执行形式. 在小 ...

  7. Building Tool(Maven/Gradle)

    构建工具的简单介绍 在代码世界中有三大构建工具,ant.Maven和Gradle.现在的状况是maven和gradle并存,gradle使用的越来越广泛.Maven使用基于XML的配置,Gradle采 ...

  8. Maven知识点整理

    1. 基础:maven 概念及生命周期 ===>Nexus创建本地Maven仓库(Maven私服) https://www.cnblogs.com/zishengY/p/7794923.html ...

  9. Introduction of Build Tool/Maven, Gradle

    什么是build tool: build tool是可以自动由源代码创建可执行的应用程序的程序. Building 包括编译.链接和打包代码成一个可用的或可执行形式. 在小型项目,开发人员常常会手动调 ...

随机推荐

  1. 创建sh文件

    创建sh文件 #/bin/bash v_file=$ v_type=$ v_desc=$ touch $v_file echo '#================================== ...

  2. HDU 5795:A Simple Nim(博弈)

    http://acm.hdu.edu.cn/showproblem.php?pid=5795 A Simple Nim Problem Description   Two players take t ...

  3. C#:写日志

    一.直接写入文件 /// <summary> /// 将message的内容写入日志文件 /// </summary> /// <param name="msg ...

  4. C#:将子Form加入父Form中

    实现的功能:已建立了多个子Form界面,在父Form界面左面,点击不同标题的链接文本,父Form界面右面显示不同的子界面内容. 具体如下: 1.加入split拆分器控件 2.在splitControl ...

  5. 20145227《Java程序设计》课程总结

    20145227<Java程序设计>课程总结 每周读书笔记链接汇总 20145227 <Java程序设计>第1周学习总结 20145227 <Java程序设计>第2 ...

  6. 20145227 《Java程序设计》第4周学习总结

    20145227 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 1.继承共同行为 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中, ...

  7. hdu4935 Prime Tree(2014多校联合第七场)

    首先这是一道dp题,对题意的把握和对状态的处理是解题关键. 题目给出的范围是n在1到1e11之间,由于在裂变过称中左儿子总是父亲节点的一个非平凡约数,容易看出裂变过程只与 素数幂有关,并且显然有素数不 ...

  8. JAVA基础知识之网络编程——-使用MutilcastSocket实现多点广播

    IP多点广播原理 设置一组特殊网络地址作为多点广播地址,每一个多点广播地址都被看作一个组,当客户需要发送和接受信息时,加入到该组即可. IP协议为多点广播提供了一批特殊的IP地址,范围是224.0.0 ...

  9. Android mvp模式、mvvm模式

    MVC和MVP的区别2007年08月08日 星期三 上午 09:23 MVC和MVP到底有什么区别呢? 从这幅图可以看到,我们可以看到在MVC里,View是可以直接访问Model的!从而,View里会 ...

  10. HTTP请求&响应、POST与GET

    HTTP请求&响应 既然说从入门级开始就说说Http请求包的结构.一次请求就是向目标服务器发送一串文本.什么样的文本?有下面结构的文本.HTTP请求包结构 请求包例子: POST /meme. ...