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

Maven-08.依赖管理-生命周期

一.生命周期 

Maven中的生命周期就是描述一次maven项目构建要经历那些阶段。包含clean,default和site三个。这三个生命周期时相互独立的。所谓相互独立,就是每套生命周期中的阶段互不干扰。 

 

 阶段是生命周期中最细化的操作。我们重点关注5个阶段,分别是clean,compile,test,package和install。在同一套生命周期中,阶段是有先后顺序的,先运行前面的阶段,再运行后面的阶段。后面的阶段依赖于前面的阶段。也就是说在一套生命周期中运行后面的阶段,前面的阶段也会运行。

在maven中的Lifecycle中可以看到这些阶段。 

那么运行install阶段时,前面的clean会不会运行,答案是不会,因为是在同一个生命周期中,当运行后面的阶段时,前面的阶段都会运行。而clean和install在不同的两套生命周期中。 

二.执行指定生命周期的两种方式

1.clean阶段 

执行clean阶段,发现target文件已经被清理。 

2.compile阶段 

执行compile阶段,发现target文件有了。 

3.test阶段

我们要执行test阶段,首先在pom.xml文件中引入单元测试依赖junit。

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>

接着编写测试代码

package com.gjw.test;import org.junit.Test;
import org.slf4j.Logger;public class DemoTest {@Testpublic void test1() {System.out.println("测试方法1执行了");}@Testpublic void test2() {System.out.println("测试方法2执行了");}@Testpublic void test3() {System.out.println("测试方法3执行了");}
}

双击maven中的test执行 

可以发现在日志中测试程序已经执行了。 

4.package阶段

接下来我们运行package阶段。双击package,发现taget下面已经出现了打包好的jar包。同时发现日志中出现了test阶段的运行结果,这是因为在同一个生命周期中,后一个阶段的运行要依赖于前一个阶段。

5.install阶段 

最后执行install阶段,就是将打包好的jar包安装到maven的本地仓库。在执行install阶段之前,首先我们要看一下本地的maven仓库中是否有打包好的maven-project01的jar包。

如果安装好了,那么应该在本地仓库的com下gjw文件夹下,因为我们的组织名(groupId)就是com.gjw,但是发现com中根本没有gjw文件夹,因此并没有安装好。 

接着我们执行install

发现我们的com文件夹中已经有了gjw文件夹,打开后可以看到项目。

 我们发现前面的单元测试也执行了。

生命周期阶段方式二——在命令行中执行

在该项目中输入cmd打开命令行,输入mvn clean,如果能够将target清除,则执行成功。 

 

target文件夹没有了,成功

三.补充

那么如果我想只执行install而绕过单元测试可以吗?当然可以

我们选中test,点击上面的禁止符号即可。

我们再次执行package阶段。

可以发现测试单元并未执行,显示Tests are skipped. 

maven的生命周期以及生命周期的各个阶段是抽象的概念,他并不执行具体的操作。具体操作是由与其绑定maven插件来完成的,因为maven本质就是一个插件执行框架,所有的工作都是由插件执行完成的。在maven面板中可以看到这些具体的插件。

 


http://www.mrgr.cn/news/9430.html

相关文章:

  • STM32(七):定时器——输入捕获
  • 异常处理 || 抛出 || 捕获 || noexcept || 异常类
  • C语言第17篇
  • Android中实现WebView的秒开场景及方案
  • OSPF与BGP防环机制总结
  • flutter开发小技巧
  • ffplay源码分析(二)结构体VideoState
  • 电脑U口管理软件分享|U口管理软件哪个好?
  • 交叉编译Qt5.12.8附带编译opengl
  • 编程思想:编程范式:面向对象
  • 递归搜索与回溯专题篇一
  • 目标检测多模态大模型实践:貌似是全网唯一Shikra的部署和测试教程,内含各种踩坑以及demo代码
  • 幂等方案分析
  • chrome扩展程序本地打包
  • 流体中的流线【StreamLines】的实现
  • mysql数据库----简单认识库的操作
  • 绝了!在vscode中体验《黑神话:悟空》的视觉冲击
  • 【Tools】 Git 的基本概念和使用方式
  • 下载了pytorch 为什么导包是 torch
  • Transformer模型:Position Embedding实现