构建工具 Maven的使用

  • Maven的简介

       Apache Maven 是一款软件项目管理的开源工具, 是基于工程对象模型(Pom)的概念而设计的。 Maven 可以管理项目构建的整个生命周期, 包括 清理 ( Clean )、编译 ( Compile )、打包( Package )、测试 ( Test ) 等环节。 同时 Maven 提供了非常丰富的插件, 使得构建项目 和管理项目变得非常简单。 构建一个项目所需要的流程如下。

  1. 生成源码。
  2. 从源码中生成文档。
  3. 编译源码。
  4. 测试。
  5. 将源码打包成 Jar, 运行在服务器、仓库或者其他位置。

    Apache Maven 已经实现了以上的全部功能, 并且只需要相关的命令就可以完成相关的功能。

  • Maven 和核心概念

        Maven的核心是 pom 文件,pom 文件以 xml 文件的形式来表示资源, 包括一些依赖 jar、插件、构建文件等。 Maven 的工作过程如下:

      构建工具 Maven的使用

  1. 首先读取 pom 文件。 pom 文件是 Maven 的核心, 所有的项目依赖、插件都在 pom 文件中统一管理。
  2. 下载依赖 jar 到本地仓库。 Maven 命令执行时, 首先会检查 pom 文件的依赖 jar, 当检测到本地没有安装依赖 jar 是,会默认从 Maven 的*仓库下载依赖 jar,*仓库地址为:http:// repo1.maven.org/maven2/ 。依赖 jar 下载成功后, 会存放在本地仓库中, 如果下载不成功,则该命令执行不会通过。
  3. 执行构建的生命周期。 Maven 的构建过程会被分解成构建阶段和构建目标, 它们共同构成了 Maven 的生命周期。
  4. 执行构建插件。 插件可以更方便地执行构建的各个阶段, 也可以用插件实现一些额外的功能。 目前 Maven 有非常丰富的插件, 如果需要,你也可以自己实现 Maven 插件。
  • pom 文件中标签的作用

        groupId、artifactId 和 version 是三个最重要的标签, 根据这三个标签可以在 Maven 仓库中唯一确定该依赖 jar 。其中, groupId 代表了公司、组织名称, 一般为公司域名的倒写;artifactId 代表该项目全局的唯一 Id; version 是该项目的版本。将项目上传到 Maven 仓库中, 有这3个标签才能准确无误的找到该 jar 包。

        parent 标签用于指定父 pom,例如需要集成Spring Boot 就需要使用 parent 标签指定该项目的父 pom 为Spring Boot。

        properties 标签用于声明一些常量, 例如:源码编码格式、JDK 版本。

        dependencies 标签为依赖的根元素, 里面可以包含多个 dependency 元素, dependency 里具体为各个依赖 jar 包的 3 个坐标, 即 groupId、 artifactId 和 version。其中 version 可以缺省, 如果缺省, 就会默认为最新发布版本。

        build 为构建标签, 它可以包含 plugins (插件) 标签, plugins 标签中可以包含若干个 plugin 标签,可以根据项目的需求添加相应的 plugin。

  • Maven 构建项目的生命周期

       在 Maven 工程中, 已经默认定义了构建工程的生命周期, 不需要额外引用其他的插件, 因为 Maven 本身就已经集成了这些插件。 默认的生命周期包括了 23 个阶段。


Maven构建工程默认的生命周期
阶段 描述
validate 验证工程的完整性
initialize

初始化

generate-sources 生成源码
process-sources 处理源码
generate-resources 生成所有源码
process-resources 处理所有源码
compile 编译
process-classes 处理 class 文件
generate-test-sources 生成测试源码
process-test-sources 处理测试源码
generate-test-resources 生成所有测试源码
process-test-resources 处理所有测试源码
test-compile 测试编译
process-test-classes 处理测试 class 文件
test 测试
prepare-package 预打包
package 打包
pre-integration-test 预集成测试
integration-test 集成测试
post-integration-test 完成集成测试
verify 验证
install 安装到本地仓库
deploy 提交到远程仓库

  • 常用的 Maven 命令
  1. mvn clean 删除工程的 target目录下的所有文件。
  2. mvn package 将工程打成 jar 包。

            mvn package 打包命令不是一个简单的命令, 它是由一系列有序的命令构成的, mvn package 命令执行过程包

        含以下6个阶段。

                1). 验证。

                2). 编译代码。

                3). 处理代码。

                4). 生成资源文件。

                5). 生成 jar 包。

                6). 测试。     


    3. mvn package -Dmaven.test.skip=true,  打包时跳过测试。

    4. mvn compile   编译工程代码, 不生成 jar 包。

    5. mvn install   命令包含了 mvn package 的所有过程, 并且将生成的 jar 包安装到本地仓库。

    6. mvn spring-boot:run   使用 spring -boot 插件, 启动 Spring Boot 工程。该命令执行时 先检查 Spring Boot 工程源码是否编译, 如果工程没有编译,则先编译; 如果编译了; 则启动工程。

    7. mvn test   测试。

    8. mvn idea:idea   生成 Idea 项目。

    9. mvn jar:jar   只打 jar 包。

    10. mvn validate    检验资源是否可用。