Maven

Maven 功能

Maven 能够帮助开发者完成以下工作:

  • 构建
  • 文档生成
  • 报告
  • 依赖
  • SCMs
  • 发布
  • 分发
  • 邮件列表

约定配置

Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:

目录目的
${basedir} 存放pom.xml和所有的子目录
${basedir}/src/main/java 项目的java源代码
${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java 项目的测试类,比如说Junit代码
${basedir}/src/test/resources 测试用的资源
${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target 打包输出目录
${basedir}/target/classes 编译输出目录
${basedir}/target/test-classes 测试编译输出目录
Test.java Maven只会自动运行符合该命名规则的测试类
~/.m2/repository Maven默认的本地仓库目录位置

构建

构建就是将源代码、第三方的依赖包(jar包)、各种资源和配置打包成为一个可执行文件(如war包)的过程。现在的高级IDE,比如IDEA,Eclipse都有自动化构建的功能,我们只需要点一下run按钮,IDE就会自动的帮我们构建项目,并部署IDE内置的容器(Tomcat)中,供我们预览和调试。既然有了这些高级IDE,为什么Maven还存在呢?实际上Maven项目建立之初,还没有这些高级的IDE。Maven取代Ant的时候,高级的IDE还没有出现,现在即使有这些高级的IDE,它也仅仅是解决了在开发阶段自动构建的问题,并没有解决项目的依赖问题,更何况是在DevOps中的持续交互和持续集成。

 

我们现在使用maven、IDE等工具,唯一的工作就是编写代码,然后运行,构建过程对我们几乎是透明的,所以往往对构建没什么太多认识

如果没有maven和IDE等

需要手动创建项目的目录,寻找jar包,手动编译,手动部属,非常麻烦

有了maven,我们就解放出来了,为我们进行构建,我们可以轻松得到可以运行的jar包

 

构建的过程

 

 

验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的
编译 compile 执行编译 源代码编译在此阶段完成
测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。
包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包
检查 verify 检查 对集成测试的结果进行检查,以保证质量达标
安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用
部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

maven打包后得到jar包,里面是各种资源和编译好的class文件,我们只需用java命令就可以运行这个jar包

 

Maven插件

Maven 有以下三个标准的生命周期:

  • clean:项目清理的处理
  • default(或 build):项目部署的处理
  • site:项目站点文档创建的处理

每个生命周期中都包含着一系列的阶段(phase)。这些 phase 就相当于 Maven 提供的统一的接口,然后这些 phase 的实现由 Maven 的插件来完成。

我们在输入 mvn 命令的时候 比如 mvn clean,clean 对应的就是 Clean 生命周期中的 clean 阶段。但是 clean 的具体操作是由 maven-clean-plugin 来实现的。

所以说 Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。

Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:

  • 创建 jar 文件
  • 创建 war 文件
  • 编译代码文件
  • 代码单元测试
  • 创建工程文档
  • 创建工程报告

插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

<code>mvn [plugin-name]:[goal-name]</code>

例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

<code>mvn compiler:compile</code>

插件类型

Maven 提供了下面两种类型的插件:

类型描述
Build plugins 在构建时执行,并在 pom.xml 的 元素中配置。
Reporting plugins 在网站生成过程中执行,并在 pom.xml 的 元素中配置。

下面是一些常用插件的列表:

插件描述
clean 构建之后清理目标文件。删除目标目录。
compiler 编译 Java 源文件。
surefile 运行 JUnit 单元测试。创建测试报告。
jar 从当前工程中构建 JAR 文件。
war 从当前工程中构建 WAR 文件。
javadoc 为工程生成 Javadoc。
antrun 从构建过程的任意一个阶段中运行一个 ant 任务的集合。

Maven常用插件整理

 

pom.xml

Maven之pom.xml配置文件详解

https://blog.csdn.net/qq_33363618/article/details/79438044

 

Introduction to the Build Lifecycle

A Build Lifecycle is Made Up of Phases

A Build Phase is Made Up of Plugin Goals

 

 

笔记

posted on 2019-11-13 09:10  AI数据  阅读(124)  评论(0编辑  收藏  举报

导航