• 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

    笔记

  • 相关阅读:
    jdbc基础
    JavaScrip练习
    EL标签
    javaBean和mvc思想
    jsp
    Session
    Cookie
    ServletConfig
    c++、opencv、泊松融合
    目标检测、Iou、nms、soft_nms、
  • 原文地址:https://www.cnblogs.com/aidata/p/11846706.html
Copyright © 2020-2023  润新知