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

devtools/2024/9/24 8:13:51/

一.生命周期 

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>

接着编写测试代码

java">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.ppmy.cn/devtools/98523.html

相关文章

javascript中数组的map方法

map 方法确实就是用来遍历数组的。它不仅遍历数组中的每一个元素&#xff0c;还能对这些元素执行指定的操作&#xff0c;并生成一个新数组&#xff0c;且新数组的长度与原数组相同。 map 方法的基本概念&#xff1a; 遍历&#xff1a;map 方法会遍历数组中的每一个元素。回调…

大模型学习笔记 - LLM 之 attention 优化

LLM 注意力机制 LLM 注意力机制 1. 注意力机制类型概述2.Group Query Attention3.FlashAttention4. PageAttention 1. 注意力机制类型概述 注意力机制最早来源于Transformer&#xff0c;Transformer中的注意力机制分为2种 Encoder中的 全量注意力机制和 Decoder中的带mask的…

生活垃圾填埋场污染监测:新标准下的技术革新与环境保护

随着城市化进程的加速&#xff0c;生活垃圾产生量急剧增加&#xff0c;如何有效处理并控制其带来的环境污染成为亟待解决的问题。近日&#xff0c;生态环境部发布了新修订的《生活垃圾填埋场污染控制标准》&#xff08;GB 16889-2024&#xff09;&#xff0c;将自2024年9月1日起…

K8S资源之PVPVC

概念 类似于Docker的数据卷挂载&#xff0c;将Pod中重要的文件挂载到宿主机上&#xff0c;如果Pod发生崩溃等情况自愈时&#xff0c;保证之前存储的数据没有丢失。 如上图中&#xff0c;将各个Pod中的目录挂载到存储层&#xff0c;如果Pod宕机后自愈均从存储层获取之前的数据…

【python】灰色预测 GM(1,1) 模型

文章目录 前言python代码 前言 用 python 复刻上一篇博客的 Matlab 代码。 【学习笔记】灰色预测 GM(1,1) 模型 —— Matlab python代码 # %% import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt from matplotlib.pylab import mplmpl.rcPa…

CodeLLDB的快速安装

1、CodeLLDB很难安装 ‌‌CodeLLDB插件是一个基于‌LLDB的调试器插件&#xff0c;专为‌Visual Studio Code设计&#xff0c;旨在提供类似于传统集成开发环境&#xff08;IDE&#xff09;的调试体验。‌ 它支持‌C、‌C和‌Objective-C程序的调试&#xff0c;包括设置断点、查…

python mysql insert 时 获取 自增 id的值

在MySQL中&#xff0c;当你使用INSERT语句插入一行数据到拥有自增主键的表时&#xff0c;你可以通过使用LAST_INSERT_ID()函数来获取这个新的自增ID值。 以下是一个简单的例子&#xff1a; 假设你有一个表users&#xff0c;它有一个自增的主键id&#xff0c;和其他一些字段比…

Linux下opencv报错 undefined reference to cv::imread cv::Mat

如果你是和libtorch一起使用&#xff0c;那么请你继续&#xff0c;否则该篇文章不适合你。 正文 在https://pytorch.org/下 下载的时候要选择Cxx11 ABI版 随后正常配置就可以了