maven工程的标准目录结构、maven的常用命令以及maven的生命周期

maven工程的标准目录结构

一个web工程都会有其标准目录结构,更何况是一个maven工程呢!那啥是maven工程呢?使用maven创建的工程我们就称它为maven工程。maven工程具有一定的目录规范,如下图所示。
在这里插入图片描述


maven的常用命令

  1. mvn compile
    compile是maven工程的编译命令,作用是将src/main/java下的java源文件编译为class文件并输出到target下的classes目录下。
    下面我就来演示一下该编译命令。首先进入maven工程目录(当前目录有pom.xml文件)下,然后运行一下mvn compile命令。
    在这里插入图片描述
    编译成功之后,可以看到项目的根目录下多了一个target文件夹,这个文件夹就是编译成功之后maven帮我们生成的文件夹。
    打开target文件夹,可以看到里面有一个classes文件夹,classes文件夹中存放的就是maven帮我们编译好的class文件。
    这就是使用maven自动编译项目的过程。

  2. mvn clean
    clean是maven工程的清理命令,执行该命令会删除target目录及其目录下的所有内容。
    在这里插入图片描述

  3. mvn test
    test是maven工程的测试命令,运行该命令会执行src/test/java下的单元测试类。
    在这里插入图片描述
    测试成功之后,可以看到helloworld项目的根目录下多了一个target文件夹,这个文件夹就是测试成功之后maven帮我们生成的。
    打开target文件夹,可以看到里面有一个classes和test-classes文件夹
    也就是说,如果执行了mvn test命令来测试项目,那么maven会先帮我们编译项目,然后再运行src/test/java下的单元测试类。

  4. mvn package
    package是maven工程的打包命令,对于普通的Java工程来说,执行该命令,会打成jar包,对于web工程来说,执行该命令,会打成war包。
    在这里插入图片描述
    打包成功之后,可以看到项目的根目录下的target文件夹中多了一个demo-1.0-SNAPSHOT.jar,这个demo-1.0-SNAPSHOT.jar就是打包成功之后maven帮我们生成的jar文件。

  5. mvn install
    install是maven工程的安装命令,执行该命令,会将maven工程打成jar包或war包并发布到本地仓库中。
    在这里插入图片描述
    从图中红色框中可以看出,maven工程被打成jar并发布到了本地仓库。
    安装成功之后,首先会在项目的根目录下生成target文件夹,打开target文件夹,可以看到里面会有demo-1.0-SNAPSHOT.jar,这个jar包就是安装成功之后maven帮我们生成的jar文件。
    除此之外,在我们的本地仓库中也会有一个demo-1.0-SNAPSHOT.jar,所以maven安装项目的过程,实际上就是把项目进行了【清理】→【编译】→【测试】→【打包】,再把打包好的jar包放到我们指定的存放jar包的maven仓库中
    结论: 使用了mvn install命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包或者war包发布到本地的maven仓库中,所以maven最常用的命令还是mvn install,这个命令能够做的事情最多。


组合使用maven的命令

maven的编译、清理、测试、打包以及部署这几个命令可以同时组合起来使用,常用的命令组合有mvn clean compile,即先清理再编译。
还有的就是mvn clean testmvn clean packagemvn clean install这些组合命令也都比较常用。


maven的生命周期

  1. maven的生命周期是什么?
    maven的生命周期就是为了对所有的构建过程进行抽象和统一,开发了一套高度完善的、易扩展的生命周期。这个生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。换句话说,几乎所有项目的构建,都能映射到这样一个生命周期上。

  2. maven的生命周期
    maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是"三套",而且是"相互独立"的,这三套生命周期分别是:
    在这里插入图片描述
    比较常用的是:Clean Lifecycle(项目清理)、Default Lifecycle(默认构建)。
    重点:
    1、每套生命周期都由一组阶段(Phase)组成,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,我们平时在命令行输入的命令总会对应于一个特定的阶段。例如:mvn clean 这个clean对应于Clean Lifecycle的一个阶段(Phase)。其实我们和Maven之间的交互就是通过调用这些生命周期的阶段。
    2、生命周期中的阶段是前后依赖的,但是这三套生命周期本身是相互独立的。
    3、属于同一个生命周期内的命令,当后面的命令执行时,前面的命令都会自动执行。


三套生命周期详解

  1. Clean生命周期(Clean Lifecycle)
    Clean Lifecycle的目的是在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段:
    在这里插入图片描述
    maven命令mvn clean就是上面的clean阶段。在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean等同于mvn pre-clean clean
  2. Default生命周期(Default Lifecycle)
    Default Lifecycle是构建的核心部分,包括编译、测试、打包、部署等等,Default生命周期是maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只介绍一些比较重要和常用的阶段。
    在这里插入图片描述
    老调常谈:执行任何一个阶段,在它之前的所有阶段都会被运行,这是Maven的机制,这也就是为什么我们运行mvn install时,代码会被编译、测试、打包的原因。此外,maven的插件机制是完全依赖maven的生命周期的,因此理解生命周期至关重要。
  3. Site生命周期(Site Lifecycle) 了解即可
    Site生命周期的目的是建立和发布项目站点,maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
    在这里插入图片描述
    这里经常用到的是site阶段和site-deploy阶段,用以生成和发布项目站点,这可是maven相当强大的功能,可以自动生成文档及统计数据。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章