• 第五章 Maven-构建生命周期、阶段、目标


    一、概述

    项目的构建通常包含数个相互独立的大块任务,可以独立执行,如生成文档,构建jar包等。单个任务的执行过程被称为一个构建生命周期,构建生命周期由一系列的构建阶段组成,每个阶段包含一系列的构建目标。
    
    我们可以执行构建阶段或构建目标。阶段按顺序执行,执行一个阶段则会先执行该阶段之前的所有阶段。当执行构建阶段时,将会按顺序执行其中包含的所有构建目标。构建目标可以被分配到一个或多个构建阶段。我们还可以直接执行构建目标。
    

    二、构建生命周期

    如前所述,Maven构建遵循特定的生命周期来构建和部署项目。
    
    Maven有3个内置的构建生命周期:
    
    # 1.default – 编译源代码并处理打包项目相关的所有事情
    # 2.clean – 清理构建输出,包括生成的编译类、JAR文件等	
    # 3.site – 为项目生成文档
    	
    每一个构建生命周期都是独立执行的,可以让Maven同时执行多个构建生命周期,它们之间彼此独立,就像独立执行Maven命令一样。
    

    三、构建阶段

    每个构建生命周期包含一系列的构建阶段,每个构建阶段又包含了一系列的构建目标。
    
    当执行一个构建阶段时,该阶段之前的所有阶段也将被执行。例如,执行install构建阶段,首先会执行该阶段之前的所有阶段,然后执行install阶段。
    
    默认生命周期的作用是构建代码,是最重要的构建生命周期,它不能直接执行,要通过执行它的构建阶段或目标来执行。默认生命周期包含非常多的阶段及目标,其中常用的构建阶段是:
    
    # 1.validate 验证项目是正确的,所有必要信息都可用,所有依赖项都已下载。
    # 2.compile 编译项目源代码。
    # 3.test 使用适当的单元测试框架对编译后的源代码运行测试。
    # 4.package 将编译后的代码打包成可发布格式,例如JAR。
    # 5.install 将包安装到本地存储库中,以便在本地的其他项目中作为依赖项使用。
    # 6.deploy 将最终包复制到远程存储库,以便与其他开发人员和项目共享。
    
    通过将阶段名称传递给mvn命令,可以执行一个构建阶段。
    
    mvn install
    
    这个例子执行项目的install阶段,首先会执行它之前的所有构建阶段,然后再执行install阶段。
    
    如果标准的阶段和目标不能满足项目需要,还可以创建自定义构建插件来实现额外构建功能。
    

    四、构建目标

    每个构建阶段都包含一系列构建目标,当运行一个阶段时,所有绑定到这个阶段的目标都将按顺序执行。
    
    构建目标本身属于一个插件,插件是构建目标的集合,也称为MOJO (Maven Old Java Object)。可以把插件理解为一个类,构建目标是类中的方法,构建阶段是是对这些方法的顺序调用。
    
    构建目标可以绑定到多个构建阶段,也可以不绑定,就像类的方法可以被调用,也可以不被调用。
    
    可以使用以下命令列出绑定到特定阶段的所有目标及其所属插件:
    
    mvn help:describe -Dcmd=PHASENAME
    
    例如,要列出所有绑定到编译阶段的目标:
    
    mvn help:describe -Dcmd=compile
    
    输出:
    
    compile' is a phase corresponding to this plugin:
    org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
    
    意思是编译器插件的编译目标被绑定到编译阶段。
    
    构建目标可以被直接执行:
    
    mvn [plugin-name]:[goal-name]
    
    
    # 示例:
    
    mvn dependency:copy-dependencies
    
    

    五、项目构建常用命令

    1.mvn deploy

    # 要构建Maven项目,我们需要通过执行其中一个阶段来运行某个生命周期:
    
    mvn deploy
    

    2.mvn install

    # 这将执行整个默认生命周期。有时,我们只需执行到安装阶段为止:
    
    mvn install
    
    但通常我们会用以下命令:
    
    mvn clean install
    
    在新构建之前,首先通过运行clean生命周期来清理项目。
    

    3.运行特定目标

    # 我们也可以只运行某个特定目标:
    
    mvn compiler:compile
    
    ps:如果我们试图在没有指定阶段或目标的情况下构建Maven项目,将会导致以下错误:
    [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal
    
  • 相关阅读:
    SpringMVC 多文件上传
    get传参乱码问题
    springMVC配置
    带参sql$和#的区别(注解)
    java多线程--实现Runnable接口方式
    java复制文件夹及所有子目录和文件
    Angularjs 学习笔记
    springboot 项目 docker化部署
    docker 基础
    Java-马士兵动态代理模式
  • 原文地址:https://www.cnblogs.com/jhno1/p/15134057.html
Copyright © 2020-2023  润新知