当前位置: 首页 > article >正文

【maven-6】Maven 生命周期相关命令演示

Maven 是一个广泛使用的项目管理工具,尤其在 Java 项目中。它通过定义一系列的生命周期阶段(Phases)来管理项目的构建过程。理解这些生命周期阶段及其相关命令,对于高效地构建和管理项目至关重要。本文将通过实际演示,详细介绍 Maven 的生命周期及其相关命令。

1. Maven 生命周期概述

Maven 的生命周期分为三个主要的生命周期:

  1. Clean Lifecycle: 用于清理项目。
  2. Default Lifecycle: 用于构建项目。
  3. Site Lifecycle: 用于生成项目站点文档。

每个生命周期由一系列的阶段(Phases)组成,每个阶段代表了一个特定的构建步骤。

1.1 Clean Lifecycle

Clean Lifecycle 包含以下几个阶段:

  • pre-clean: 执行一些清理前的准备工作。
  • clean: 删除之前构建生成的所有文件。
  • post-clean: 执行一些清理后的操作。

1.2 Default Lifecycle

Default Lifecycle 包含多个阶段,以下是一些关键阶段:

  • validate: 验证项目是否正确,所有必要信息是否可用。
  • compile: 编译项目的源代码。
  • test: 使用单元测试框架测试编译后的源代码。
  • package: 将编译后的代码打包成可分发的格式(如 JAR、WAR 等)。
  • verify: 对集成测试的结果进行检查,确保质量标准。
  • install: 将包安装到本地仓库,供其他项目使用。
  • deploy: 将最终的包复制到远程仓库,供其他开发人员和项目使用。

1.3 Site Lifecycle

Site Lifecycle 包含以下几个阶段:

  • pre-site: 执行一些生成站点前的准备工作。
  • site: 生成项目的站点文档。
  • post-site: 执行一些生成站点后的操作。
  • site-deploy: 将生成的站点文档部署到指定的服务器。

2. Maven 生命周期相关命令演示

接下来,我们将通过实际操作演示 Maven 生命周期中的关键命令。

2.1 Clean Lifecycle 相关命令

2.1.1 mvn clean

mvn clean 命令用于删除之前构建生成的所有文件。

mvn clean

执行该命令后,Maven 会删除 target 目录下的所有文件和目录。

未清理前:

在这里插入图片描述

执行清理:

在这里插入图片描述
清理之后:

在这里插入图片描述

2.2 Default Lifecycle 相关命令

2.2.1 mvn validate

mvn validate 命令用于验证项目是否正确,所有必要信息是否可用。

mvn validate

该命令通常在构建过程的早期执行,以确保项目的基本配置是正确的。

2.2.2 mvn compile

mvn compile 命令用于编译项目的源代码。

mvn compile

执行该命令后,Maven 会将项目的源代码编译成字节码,并生成相应的类文件。

在这里插入图片描述

2.2.3 mvn test

mvn test 命令用于运行项目的单元测试。

mvn test

执行该命令后,Maven 会运行项目中的所有单元测试,并生成测试报告。

test命令的作用是编译并运行maven项目的src/test目录下的junit测试代码。注意:只能运行junit测试代码。 并且使用test运行的测试类的类名必须以Test结尾,否则不会运行,不会看到结果。

在test/java目录下创建一个测试类,书写测试方法,代码如下:

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Unit test for simple App.
 */
public class AppTest 
    extends TestCase
{
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public AppTest( String testName )
    {
        super( testName );
    }

    /**
     * @return the suite of tests being tested
     */
    public static Test suite()
    {
        return new TestSuite( AppTest.class );
    }

    /**
     * Rigourous Test :-)
     */
    public void testApp()
    {
        assertTrue( true );
    }
}

编译后生成的文件:

在这里插入图片描述

运行日志:

在这里插入图片描述
注意:

​ 1.test命令只能运行test目录下的junit包下的类

​ 2.test命令也可以运行多个测试方法:

import org.junit.Test;

public class MavenTest {
    @Test
    public void show() {
        System.out.println("show............");
    }
    @Test
    public void show1() {
        System.out.println("show1............");
    }
    @Test
    public void show2() {
        System.out.println("show2............");
    }
}

在这里插入图片描述

2.2.4 mvn package

mvn package 命令用于将编译后的代码打包成可分发的格式(如 JAR、WAR 等)。

mvn package

执行该命令后,Maven 会将编译后的代码打包成一个 JAR 或 WAR 文件,并存放在 target 目录下。

在这里插入图片描述
注意:每次打包前还会再次执行所有test命令

2.2.5 mvn verify

mvn verify 命令用于对集成测试的结果进行检查,确保质量标准。

mvn verify

该命令通常在 package 阶段之后执行,用于验证打包后的代码是否符合质量标准。

2.2.6 mvn install

mvn install 命令用于将包安装到本地仓库,供其他项目使用。

mvn install

执行该命令后,Maven 会将打包后的文件安装到本地 Maven 仓库中,供其他项目引用。

在这里插入图片描述
在这里插入图片描述

注意:每次安装前还会再次执行所有test命令

2.2.7 mvn deploy

mvn deploy 命令用于将最终的包复制到远程仓库,供其他开发人员和项目使用。

mvn deploy

执行该命令后,Maven 会将打包后的文件部署到远程 Maven 仓库中,供其他开发人员和项目引用。

2.3 Site Lifecycle 相关命令

2.3.1 mvn site

mvn site 命令用于生成项目的站点文档。

mvn site

执行该命令后,Maven 会生成项目的站点文档,并存放在 target/site 目录下。

2.3.2 mvn site-deploy

mvn site-deploy 命令用于将生成的站点文档部署到指定的服务器。

mvn site-deploy

执行该命令后,Maven 会将生成的站点文档部署到指定的服务器上。

2.4 组合命令

Maven 允许将多个生命周期阶段组合在一起执行。例如:

2.4.1 mvn clean install

mvn clean install 命令用于先清理项目,然后安装包到本地仓库。

mvn clean install

执行该命令后,Maven 会先删除 target 目录下的所有文件,然后编译、测试、打包并安装到本地仓库。

2.4.2 mvn clean package

mvn clean package 命令用于先清理项目,然后打包代码。

mvn clean package

执行该命令后,Maven 会先删除 target 目录下的所有文件,然后编译、测试并打包代码。

3. 插件与生命周期

Maven 的生命周期阶段是通过插件(Plugins)来实现的。每个阶段都对应一个或多个插件的目标(Goals)。例如,compile 阶段通常由 maven-compiler-plugin 插件的 compile 目标来执行。

你可以通过配置 pom.xml 文件来定制插件的行为,例如指定编译器的版本、源代码的编码等。

4. 总结

Maven 的生命周期是项目构建的核心,理解并掌握这些生命周期阶段及其相关命令,可以帮助你更高效地管理和构建 Java 项目。通过组合不同的生命周期阶段,你可以灵活地执行各种构建任务,确保项目的质量和可维护性。


http://www.kler.cn/a/420222.html

相关文章:

  • Android Studio 右侧工具栏 Gradle 不显示 Task 列表
  • Unity AssetBundles(AB包)
  • 08-模块与包
  • 论文导读 I RAFT:使语言模型适应特定领域的RAG
  • xiaolin coding 图解 MySQL笔记——事务篇
  • Elasticsearch 进阶
  • XELA - uSkin 三轴触觉传感器:为机器人赋予敏锐触感
  • 永磁同步电机负载估计算法--滑模扰动观测器
  • 【合作原创】使用Termux搭建可以使用的生产力环境(一)
  • golang用errgroup的一个小小坑
  • UIlicious - 自动化端到端测试
  • Oracle 建表的存储过程
  • YOLOv11改进,YOLOv11添加SAConv可切换空洞卷积,二次创新C3k2结构
  • Dockerfile 安装echarts插件给java提供服务
  • animate.css和wow.js结合使用实现动画效果
  • 【Windows 11专业版】使用问题集合
  • .net —— Razor
  • 自签发证书配置 HTTPS 单向双向验证
  • 第三方Cookie的消亡与Google服务器端标记的崛起
  • 详解HTML5语言
  • 鸿蒙Next网络请求和解析
  • node.js基础学习-crypto模块-加密解密(九)
  • Java项目实战II基于微信小程序的亿家旺生鲜云订单零售系统的设计与实现(开发文档+数据库+源码)
  • [代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和
  • 分层图最短路
  • BGP通过route-policy路由策略调用ip-prefix网络前缀实现负载均衡与可靠性之AS-path属性