Maven 的安装

安装 Maven 之前需要安装 JDK(Maven 3.3 版本需要 1.7 及更高版本的 JDK 才能运行,但仍然可以构建基于 1.3 或更高版本的 JDK 的 Java 应用 )并配置 Java 环境变量(推荐通过建立 JAVA_HOME 环境变量的方式来间接指定 Java 的环境变量,而不是直接把 JDK 的安装目录作为 Java 环境变量,否则不能在控制台使用 mvn 命令。因为目前版本的 Maven(版本为 3.3.9)在控制台执行时会查找 JAVA_HOME 环境变量)。关于 JDK 的安装和 Java 环境变量的配置请参考我写的详解Java环境变量配置(Windows&Linux)

下载 Maven

Maven 官方下载地址:http://maven.apache.org/download.cgi。将下载得到的压缩包解压到合适的运行位置,得到名为 apache-maven-3.3.x 的文件夹(我的是 apache-maven-3.3.9)。文件的文件结构如下:

  • LICENSE.txt:包含了 Apache Maven 的软件许可证;
  • NOTICE.txt:包含了一些 Maven 依赖的类库所需要的通告及权限;
  • README.txt:包含了一些安装指令;
  • bin/:目录包含了运行 Maven 的 mvn 脚本;
  • boot/:目录包含了一个负责创建 Maven 运行所需要的类装载器的 JAR 文件—— plexus-classworlds-x.x.x.jar。plexus-classworlds 是一个类加载框架,相对于默认的类加载器,该框架提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库;
  • conf/:目录包含了一个全局的 settings.xml 文件,该文件用来自定义你机器上 Maven 的一些行为。如果你需要自定义 Maven,更通常的做法是将该文件复制到 ~/.m2 目录下,每个用户都有对应的这个目录;
  • lib/:目录有了一个包含 Maven 核心的 JAR 文件。

运行和验证 Maven

以 Windows 系统为例,新建一个 MAVEN_HOME 的环境变量,指向 Maven 的安装目录,然后将 %MAVEN_HOME%\bin 目录添加到 Path 环境变量中。添加环境变量的步骤参考笔者之前的文章环境变量详解(Windows&Linux)

在控制台输入mvn -v 即可查看 Maven 的版本。如下图所示。

C:\Users\Vincent Huang>echo %JAVA_HOME%
D:\development\tools\jdk1.8.0_171

C:\Users\Vincent Huang>echo %MAVEN_HOME%
D:\development\tools\apache-maven-3.3.9

C:\Users\Vincent Huang>mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\development\tools\apache-maven-3.3.9
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: D:\development\tools\jdk1.8.0_171\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

运行 Maven 的语法如下:

mvn [options] [<goal(s)>] [<phase(s)>]

使用 -h 选项可查看所有可用的选项:

mvn -h

配置 Maven

Maven 可以使用其本身的配置和所构建项目中的配置,这些配置分散在以下几个地方:

  • MAVEN_OPTS 环境变量。该环境变量指定启动 Maven 时所用的 JVM 参数,并可用于为其提供其他选项。例如,如果通过 Maven 构建大型项目出现 java.lang.OutOfMemoryError,可以使用值 -Xms256m -Xmx512m 来定义 JVM 内存配置。

  • settings.xml。Maven 会创建一个 ~/.m2 目录(这里的 ~ 指用户的 home 目录),该目录下有:

    • ~/.m2/settings.xml:该文件包含了用户相关的认证,仓库和其它信息,用来自定义 Maven 行为。一般使用 %MAVEN_HOME%\config\settings.xml 文件来覆盖该文件;
    • ~/.m2/repository/:该目录是默认的本地的仓库。当从远程 Maven 仓库下载依赖的时候,Maven 在本地仓库存储了这个依赖的一个副本。
  • .mvn。该可选目录位于 Maven 项目的顶层目录中。该目录下的 maven.configjvm.configextensions.xml 文件包含当前项目中特定的 Maven 配置。该目录是 Maven 项目的一部分,可以添加到 Maven 项目的版本控制中。

    • .mvn/extensions.xml。以前(直到 Maven 3.2.5)是创建一个包含扩展的 jar(如果有其他依赖项,则必须使用 shade),并手动将其放入 ${MAVEN_HOME}/lib/ext 目录。这意味着每个想使用该扩展的开发人员都需要这样做,很不方便。另一个选择就是通过 mvn -Dmaven.ext.class.path=extension.jar 在命令行上提供 jar 的路径。但这样的话,每次调用 Maven 时都需要提供这些选项,也不是很方便。从现在起,可以定义一个 ${maven.projectBasedir}/.mvn/extensions.xml 文件,该文件中可以声明扩展相关的信息。该文件示例如下所示:

      <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
        <extension>
          <groupId/>
          <artifactId/>
          <version/>
        </extension>
      </extensions>
      

      如上所示,可以在该文件中通过声明扩展的 Maven 坐标(groupId、artifactId、version) 来使用该扩展。此外,这些扩展的所有可传递依赖项都将自动从仓库中下载。因此,不再需要创建 shade 工件。

    • .mvn/maven.config。很难定义一组调用 Maven 命令行的通用选项。从 Maven 3.3.1+ 开始,可以通过将这些选项放到脚本中来解决,但现在可以通过定义 ${maven.projectBasedir}/.mvn/maven.config 文件来实现,该文件包含 mvn 命令行的配置选项。例如,像 -T3 -U --fail-at-end,只需在每次调用 Maven 时仅使用 mvn clean package 就可以了(而不是 mvn -T3 -U --fail-at-end clean package),这样也不会在每次调用时丢失 -T3 -U --fail-at-end 选项。${maven.projectBasedir}/.mvn/maven.config 位于 ${maven.projectBasedir}/.mvn/ 目录中,对于根目录中含有多个模块的项目中,该文件也可以发挥作用。

    • .mvn/jvm.config。从 Maven 3.3.1+ 开始,可以通过 ${maven.projectBasedir}/.mvn/jvm.config 文件定义运行 Maven 的 JVM 配置,这意味着可以在每个项目基础上定义运行 Maven 的 JVM 选项。该文件将成为项目的一部分,并应该将其与项目中的其他文件一起检入版本控制系统。因此不再需要 MAVEN_OPTS.mavenrc 文件。例如,如果将以下 JVM 选项放入 ${maven.projectBasedir}/.mvn/jvm.config 文件中:

      -Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true
      

      这样,就不需要在 MAVEN_OPTS 中使用这些选项,也不需要在不同的配置之间切换。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值