Maven - 简介

作者: 欧余山南 | 来源:发表于2017-10-12 18:42 被阅读0次

    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文件的主要组成部分:

    image.png

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

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

    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.companyname.project-group</groupId>
       <artifactId>project</artifactId>
       <version>1.0</version>
     </project>
    

    需要说明的是每个工程应该只有一个 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文件的继承关系如下图所示:

    image.png

    可以让一个pom文件显式地继承另一个pom文件。这样,可以通过修改公共父pom文件的设置来修改所有子pom文件的设置。在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>
    <parent>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>my-parent</artifactId>
    <version>2.0</version>
    <relativePath>../my-parent</relativePath>
    

    </parent>
    <artifactId>my-project</artifactId>

    </project>

    相关文章

      网友评论

        本文标题:Maven - 简介

        本文链接:https://www.haomeiwen.com/subject/xtmoyxtx.html