Maven - 简介

Maven简介

Maven是一个强大的Java项目构建工具。由于Maven是用Java开发的,因此Maven被更多的用于Java项目中。
构建工具是将软件项目构建相关的过程自动化的工具。构建一个软件项目通常包含以下一个或多个过程:

  • 生成源码(如果项目使用自动生成源码);

  • 从源码生成项目文档;

  • 编译源码;

  • 将编译后的代码打包成JAR文件或者ZIP文件;

  • 将打包好的代码安装到服务器、仓库或者其它的地方;
    Maven 使用约定而不是配置,意味着开发者不需要再自己创建构建过程。
    开发者不需要再关心每一个配置细节。Maven 为工程提供了合理的默认行为。当创建 Maven 工程时,Maven 会创建默认的工程结构。开发者只需要合理的放置文件,而在 pom.xml 中不再需要定义任何配置。

  • 项目对象模型(POM): POM 是 Maven 2 中的里程碑式的模型。该模型的一部分已经构建到 Maven 引擎(被亲切地称为反应堆 )中,其余部分则通过一个名叫 pom.xml 的基于 XML 的元数据文件来声明。

  • 依赖项管理模型: Maven 对如何管理项目的依赖项很在行。依赖项管理是一片灰色地带,典型的构建-管理工具和系统都未明确涉及。Maven 2 构建了 Maven 依赖项管理模型,该模型能够适应大多数需求。这个模型被证明是有效而高产的模型,目前,主要的开源项目都部署了该模型。

  • 构建生命周期和阶段:和 POM 相关的概念是构建生命周期 和阶段。这是 Maven 2 的内嵌概念模型和现实物理世界之间的接口。使用 Maven 时,工作主要是通过插件来执行的。在构建周期中,Maven 2 通过遵循一系列定义好的阶段,将这些插件协调起来。
    下面的表格展示了工程源码文件、资源文件的默认配置,和其他一些配置。假定 ${basedir} 表示工程目录:

    | 配置项 | 默认值 |
    | ------------- |:-------------:|
    | resources | ${basedir}/src/main/resources |
    | Tests | ${basedir}/src/test |
    | Complied byte code | ${basedir}/target |
    | distributable JAR | ${basedir}/target/classes |
    为了构建工程,Maven 为开发者提供了选项来配置生命周期目标和工程依赖(依赖于 Maven 的插件扩展功能和默认的约定)。大部分的工程管理和构建相关的任务是由 Maven 插件完成的。
    开发人员不需要了解每个插件是如何工作的,就能够构建任何给定的 Maven 工程。

Maven - 环境配置

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。

系统要求

项目 要求
JDK Maven 3.3 要求 JDK 1.7 或以上
Maven 3.2 要求 JDK 1.6 或以上
Maven 3.0/3.1 要求 JDK 1.5 或以上
内存 没有最低要求
磁盘 Maven 自身安装需要大约 10 MB 空间。
除此之外,额外的磁盘空间将用于你的本地 Maven 仓库。
你本地仓库的大小取决于使用情况,但预期至少 500 MB。
操作系统 没有最低要求

步骤 1:检查 Java 安装

操作系统 任务 命令
Windows 打开命令控制台 c:> java -version
Linux 打开命令终端 $ java -version
Mac 打开终端 machine:~ joseph$ java -version

现在打开控制台,执行下面的 java 命令。

操作系统 任务 命令
Windows 打开命令控制台 c:> java -version
Linux 打开命令终端 $ java -version
Mac 打开终端 machine:~ joseph$ java -version
操作系统 输出
Windows java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Linux java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Mac java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

步骤 2:设置 Java 环境

步骤 3:下载 Maven 文件

从以下网址下载 Maven 3.2.5:http://maven.apache.org/download.html

步骤 4:解压 Maven 文件

操作系统 位置 (根据你的安装位置而定)
Windows C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
Linux /usr/local/apache-maven
Mac /usr/local/apache-maven

解压文件到你想要的位置来安装 Maven 3.2.5,你会得到 apache-maven-3.2.5 子目录。

操作系统 位置 (根据你的安装位置而定)
Windows C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
Linux /usr/local/apache-maven
Mac /usr/local/apache-maven

步骤 5:设置 Maven 环境变量

操作系统 输出
Windows 使用系统属性设置环境变量。
M2_HOME=C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
Linux 打开命令终端设置环境变量。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m
Mac 打开命令终端设置环境变量。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m

添加 M2_HOME、M2、MAVEN_OPTS 到环境变量中。

操作系统 输出
Windows 使用系统属性设置环境变量。
M2_HOME=C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
Linux 打开命令终端设置环境变量。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m
Mac 打开命令终端设置环境变量。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m

步骤 6:添加 Maven bin 目录到系统路径中

操作系统 输出
Windows 添加字符串 “;%M2%” 到系统“Path”变量末尾
Linux export PATH=M2:PATH
Mac export PATH=M2:PATH

步骤 7:验证 Maven 安装

操作系统 输出 命令
Windows 打开命令控制台 c:> mvn --version
Linux 打开命令终端 $ mvn --version
Mac 打开终端 machine:~ joseph$ mvn --version

现在打开控制台,执行以下 mvn 命令。

操作系统 输出 命令
Windows 打开命令控制台 c:> mvn --version
Linux 打开命令终端 $ mvn --version
Mac 打开终端 machine:~ joseph$ mvn --version

Maven - POM

Maven的中心思想是POM文件(项目对象模型)。POM文件是以XML文件的形式表述项目的资源,如源码、测试代码、依赖(用到的外部Jar包)等。POM文件应该位于项目的根目录下。POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。
POM文件描述的是构建“什么”,而不是“如何”构建。如何构建是取决于Maven的构建阶段和目标。
每一个项目都有一个POM文件。POM文件即pom.xml,应该放在项目的根目录下。一个项目如果分为多个子项目,一般来讲,父项目有一个POM文件,每一个子项目都有一个POM文件。在这种结构下,既可以一步构建整个项目,也可以各个子项目分开构建。
下图说明了Maven是如何使用POM文件的,以及POM文件的主要组成部分:

Maven - 简介_第1张图片
image.png

POM 也包含了目标和插件。当执行一个任务或者目标时,Maven 会查找当前目录下的 POM,从其中读取所需要的配置信息,然后执行目标。能够在 POM 中设置的一些配置如下:

  • project dependencies
  • plugins
  • goals
  • build profiles
  • project version
  • developers
    在创建 POM 之前,我们首先确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是工程的唯一标识。

POM 举例


   4.0.0
   com.companyname.project-group
   project
   1.0
 

需要说明的是每个工程应该只有一个 POM 文件。

  • 所有的 POM 文件需要 project 元素和三个必须的字段:groupId, artifactId,version。
  • 在仓库中的工程标识为 groupId:artifactId:version
  • POM.xml 的根元素是 project,它有三个主要的子节点:
节点 描述
groupId 这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.company.bank 拥有所有的和银行相关的项目。
artifactId 这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。
version 这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如:com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1.

Super POM

所有的Maven pom文件都继承自一个父pom。如果没有指定父pom,则该pom文件继承自根pom。pom文件的继承关系如下图所示:

Maven - 简介_第2张图片
image.png

可以让一个pom文件显式地继承另一个pom文件。这样,可以通过修改公共父pom文件的设置来修改所有子pom文件的设置。在pom文件的起始处指定父pom,例如:


4.0.0

org.codehaus.mojo
my-parent
2.0
../my-parent


my-project

你可能感兴趣的:(Maven - 简介)