Maven的生命周期

  在上一篇文章中,我们已经成功的创建了Maven项目,在该项目的idea中,我们通过点击右侧面板中的【Maven Projects】选项就可以查看到Maven的常用构建命令,如下图所示

这里写图片描述

  如果不知道上一篇文章的话,可以看这里:

  如上图所示,上面展示的就是Maven的一些常用的构建命令,而这些命令共同组成了Maven的生命周期,

1、构建Maven生命周期的基础知识

  Maven基于构建生命周期的核心概念。这意味着构建和分发特定工件(项目)的过程是明确定义的。

  对于构建项目的人来说,这意味着只需要学习一小组命令来构建任何Maven项目,而POM将确保他们得到他们想要的结果。

  有三种内置的构建生命周期:default、clean和site。default的生命周期处理您的项目部署,clean的生命周期处理项目清理工作,而site的生命周期处理你的项目所生成的文档。

2、Maven常用构建命令

validate:验证项目是正确的,所有必要的信息都是可用的
compile:编译项目的源代码
test:使用适当的单元测试框架测试编译后的源代码。这些测试不应要求将代码打包或部署
package:使用已编译的代码,并将其打包成可分布格式,例如JAR。
verify:对集成测试的结果进行任何检查,以确保满足质量标准
install:将包安装到本地存储库中,以便在本地其他项目中使用该包
deploy:在构建环境中完成,将最终的包复制到远程存储库中,以便与其他开发人员和项目共享。

  这些生命周期阶段(加上这里没有显示的其他生命周期阶段)是按顺序执行的,以完成默认的生命周期。鉴于上面的生命周期阶段,这意味着当使用默认的生命周期时,Maven将会优先执行检查项目(validate),然后将会尝试编译源代码(compile),运行集成测试方案(test),验证了集成测试(verify),验证包安装到本地存储库(install),然后将安装包部署到远程存储库(deploy)。

3、Maven常用的命令行调用

  在开发环境中,使用下面的调用来构建和安装工件到本地存储库中。

mvn install

  这条命令将会按顺序执行默认的生命周期阶段,比如(validate、compile、package等)。您只需要调用最后一个构建阶段,在本例中,install:

  在构建环境中,使用下面的命令行清理构建和部署项目到共享仓库中。

mvn clean deploy

  同一个命令可以在多模块场景中使用(例如,一个或多个子项目的项目)。Maven遍历每个子项目并执行clean,然后执行deploy(包括所有之前的构建阶段步骤)。

4、Maven插件

  将目标添加到阶段的第二种方法是在项目中配置插件。插件是为Maven提供目标的工件。此外,一个插件可能有一个或多个目标,其中每个目标都代表该插件的功能。例如,编译器插件有两个目标:compile和testCompile。前者编译您的主要代码的源代码,而后者编译测试代码的源代码。

  正如您将在后面的部分中看到的,插件可以包含指示将目标绑定到哪个生命周期阶段的信息。请注意,添加插件本身是不够的——您还必须指定要作为构建的一部分运行的目标。

  被配置的目标将被添加到已经绑定到生命周期的目标中。如果超过一个目标被绑定到一个特定的阶段,那么使用的顺序是:首先执行打包的,然后是在POM中配置的那些。注意,您可以使用元素来获得对特定目标的更多控制。

  例如,Modello插件默认它的目标Modello:java到generate-sources阶段(注意:Modello:java目标生成java源代码)。因此,要使用Modello插件,并让它从一个模型中生成源并将其合并到构建中,您可以将以下的内容添加到您的POM中的中的:

 <plugin>
   <groupId>org.codehaus.modello</groupId>
   <artifactId>modello-maven-plugin</artifactId>
   <version>1.8.1</version>
   <executions>
     <execution>
       <configuration>
         <models>
           <model>src/main/mdo/maven.mdo</model>
         </models>
         <version>4.0.0</version>
       </configuration>
       <goals>
         <goal>java</goal>
       </goals>
     </execution>
   </executions>
 </plugin>

  您可能想知道为什么元素在这里。因此,如果需要,您可以多次使用不同的配置来运行相同的目标。单独的执行也可以给一个ID,以便在继承或应用概要文件时,您可以控制目标配置是否被合并或转换为额外的执行。

  当给定一个特定阶段的多个执行时,它们将按照POM中指定的顺序执行,而继承的执行是先运行的。

  现在,在modello:java中,只有在generate-sources阶段才有意义。但是有些目标可以在多个阶段使用,而且可能不会有合适的默认值。对于那些,您可以自己指定阶段。例如,假设您有一个目标显示:将display:time与命令行的时间相一致的时间,您希望它在process-test-resources阶段中运行,以指示测试何时开始。这样的配置是这样的:

<plugin>
   <groupId>com.mycompany.example</groupId>
   <artifactId>display-maven-plugin</artifactId>
   <version>1.0</version>
   <executions>
     <execution>
       <phase>process-test-resources</phase>
       <goals>
         <goal>time</goal>
       </goals>
     </execution>
   </executions>
 </plugin>

5、Maven生命周期参考

  下面列出了default、clean和site生命周期的所有构建阶段,这些阶段按照指定的顺序执行。


clean生命周期

执行阶段描述说明
pre-clean在实际的项目清理之前执行所需的过程
clean删除前一个构建生成的所有文件
post-clean执行完成项目清理所需的过程


Default生命周期

执行阶段描述说明
validate验证项目是正确的,所有必要的信息都是可用的。
initialize初始化构建状态,例如设置属性或创建目录。
generate-sources生成包含在编译中的任何源代码。
process-sources处理源代码,例如过滤任何值。
generate-resources生成包含在包中的资源。
process-resources将资源复制并处理到目标目录中,准备打包。
compile编译项目的源代码。
process-classes从编译后生成生成的文件,例如在Java类上执行字节码增强。
generate-test-sources生成包含在编译中的任何测试源代码。
process-test-sources处理测试源代码,例如过滤任何值。
generate-test-resources为测试创建资源。
process-test-resources将资源复制并处理到测试目标目录中。
test-compile将测试源代码编译到测试目标目录
process-test-classes从测试编译后post-process生成文件,例如在Java类上执行字节码增强。对于Maven 2.0.5和以上。
test使用合适的单元测试框架运行测试。这些测试不应该要求打包或部署代码。
prepare-package在实际包装前执行必要的准备工作。这通常会导致包的一个未打包的、经过处理的版本。(Maven 2.1及以上)
package使用已编译的代码,并将其打包成可部署格式,例如JAR。
pre-integration-test执行集成测试之前需要执行的操作。这可能涉及到设置所需的环境等问题。
integration-test在需要集成测试的环境中,处理并部署包。
post-integration-test执行集成测试后所需要的操作。这可能包括清理环境。
verify运行任何检查以验证包是否有效,并满足质量标准。
install将该包安装到本地存储库中,作为本地其他项目的依赖项。
deploy在集成或发布环境中完成,将最终包复制到远程存储库中,以便与其他开发人员和项目共享。


Site生命周期

执行阶段描述说明
pre-site在实际的项目站点生成之前执行过程
site生成项目的站点文档
post-site执行确定站点生成的过程,并为站点部署做好准备
site-deploy将生成的站点文档部署到指定的web服务器
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven生命周期定义了一系列的阶段(phases),每个阶段包含了一组插件目标(goals)。在Maven构建过程中,一般会按照生命周期的顺序执行这些阶段和目标。 Maven生命周期分为三个主要的生命周期: 1. Clean生命周期:该生命周期与项目的清理相关,用于清除先前构建生成的文件。 - clean:清理项目,删除生成的目录和文件。 2. Default生命周期:该生命周期是项目构建的核心,负责编译、测试、打包、部署等操作。 - validate:验证项目是否正确且所有必要信息都可用。 - compile:编译项目的源代码。 - test:使用合适的单元测试框架运行测试。 - package:将编译后的代码打包成可发布的格式,如JAR、WAR。 - verify:对集成测试的结果进行检查,以保证质量达标。 - install:将包安装到本地仓库,供其他项目使用。 - deploy:将最终的包复制到远程仓库,供其他开发人员和项目使用。 3. Site生命周期:该生命周期用于生成项目的站点文档。 - site:生成项目站点的文档。 - site-deploy:将生成的站点发布到服务器上。 需要注意的是,Maven生命周期中的每个阶段和目标都有其预定的执行顺序,且每个阶段都会执行其前面的所有阶段。你可以通过在命令行中执行`mvn <phase>`来运行指定的生命周期阶段。 需要注意的是,Maven生命周期是可扩展的,可以通过自定义插件来添加额外的阶段和目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值