关于Maven生命周期相关命令演示
作者:AllenBright
Maven 是一个广泛使用的项目管理工具,尤其在 Java 项目中。它通过定义一系列的生命周期阶段(Phases)来管理项目的构建过程。理解这些生命周期阶段及其相关命令,对于高效地构建和管理项目至关重要。
本文将通过实际演示,详细介绍 Maven 的生命周期及其相关命令。
1. Maven 生命周期概述
Maven 的生命周期分为三个主要的生命周期:
Clean Lifecycle:用于清理项目。Default Lifecycle:用于构建项目。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 项目。通过组合不同的生命周期阶段,你可以灵活地执行各种构建任务,确保项目的质量和可维护性。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
