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. Oracle truncate和delete的区别

    首先truncate是DDL语句,而delete是DML语句. truncate的删除比delete快很多,尤其是表数据量大的时候,原因是truncate执行过程中不产生undo,所以truncate ...

  2. Android listview下拉刷新 SwipeRefreshLayout

    今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下. SwipeRefreshL ...

  3. Optimal Milking 分类: 图论 POJ 最短路 查找 2015-08-10 10:38 3人阅读 评论(0) 收藏

    Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 13968 Accepted: 5044 Case ...

  4. Unity-Animator深入系列---目标匹配Target Matching

    回到 Animator深入系列总目录 一开始会理所当然的觉得,匹配是这样的: 但结果却是这样的(右边的Cube是匹配目标): 感觉这个接口应该是专门为攀爬之类的动画准备的,属于被动匹配位置,移动整个对 ...

  5. Python科学计算环境推荐——Anaconda

    最近在用Python做中文自然语言处理.使用的IDE是PyCharm.PyCharm确实是Python开发之首选,但用于科学计算方面,还略有欠缺.为此我尝试过Enthought Canopy,但Can ...

  6. hdu So Easy!

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. Mysql--学习笔记(==》简单查询三)

    -- 查看查询数据显示SELECT * FROM student; -- 显示一部分信息的查询SELECT sname 姓名,sscore 成绩,saddress 家庭住址 FROM student; ...

  8. IIS与Apache共用80端口方法[试用成功]

    然后假设apache服务器已经安装完成,打开httpd.conf配置文件,找到这些地方去掉#开启代理模块: LoadModule proxy_module modules/mod_proxy.so L ...

  9. ContentProvider官方教程(3)ContentResolver查询、遍历 示例

    Retrieving Data from the Provider This section describes how to retrieve data from a provider, using ...

  10. Mysql基础语法

    mysql SELECT VERSION(), CURRENT_DATE, now();select user(); create database pets;show databases; use ...