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

news2025/1/15 19:38:22

一.生命周期 

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 {

    @Test
    public void test1() {
        System.out.println("测试方法1执行了");
    }

    @Test
    public void test2() {
        System.out.println("测试方法2执行了");
    }

    @Test
    public 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.coloradmin.cn/o/2060384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教你学习企业高性能web服务器-nginx

一、web服务介绍 1、Apache的三种模型 &#xff08;1&#xff09;Apache prefork 预派生模式&#xff0c;有一个主控制进程&#xff0c;然后生成多个子进程&#xff0c;使用select模型&#xff0c;最大并发1024每个子进程有一个独立的线程响应用户请求相对比较占用内存&…

笔记(day24)正则表达式

一、正则表达式 1.1 概述 正则表达式定义了字符串的匹配模式,可以用来进行搜索,编辑,或处理文本 并不仅限于某一种语言,但是在每种语言中有细微的差别 1 数据校验、格式校验 2 数据提取 1.2 语法 元字符描述\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如&a…

专题---自底向上的计算机网络(数据链路层)

目录 计算机网络概述 物理层 数据链路层 网络层 传输层 应用层 网络安全

pinctl 和 gpio子系统驱动

一.设备树中添加pinctl节点模板 1.创建对应的节点 同一个外设的 PIN 都放到一个节点里面&#xff0c;打开 imx6ull-14x14-evk.dts&#xff0c;在 iomuxc 节点 中的“imx6ul-evk”子节点下添加 “pinctrl_test” 节点。添加完成以后如下所示&#xff1a; pinctrl_test:test_g…

8.21Qt作业

运用网络通信&#xff0c;实现简单聊天室 客户端主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this);//初始化界面ui-&g…

Postman之Newman命令以及常用参数

Newman介绍 Postman是专为接口测试而生&#xff0c;而Newman是专为Postman而生。因为服务器一般都是Linux系统&#xff0c;而前文提到的操作都离不开Postman的客户端&#xff0c;为解决这个问题&#xff0c;谷歌公司引入了 Newman工具。Newman是Postman的命令行&#xff0c;是…

STM32——I2C通信外设

软件只需要CR控制寄存器&#xff0c;DR数据寄存器&#xff0c;为实时监控状态&#xff0c;软件需要读取SR状态寄存器&#xff0c;好比&#xff1a;开车时CR是控制汽车方向&#xff0c;踩油门等&#xff0c;SR是仪表盘。 由于I2C是半双工&#xff0c;因此发送和接收数据都是在移…

又一家光伏企业终止,行业产能过剩竞争激烈,毛利率极低

一道新能终止原因如下&#xff1a;首先&#xff0c;一道新能从事光伏单晶电池和单晶组件业务&#xff0c;该行业竞争激烈&#xff0c;目前已经出现了产能过剩&#xff0c;甚至负毛利率的情况&#xff1b;其次&#xff0c;报告期内&#xff0c;一道新能营收高达227亿&#xff0c…

DC-DC 转换器中的压电谐振器:当前状态和限制

在小体积和高频下提高功率密度并减小电感器和变压器的尺寸是DC-DC转换器设计中的一大挑战。为了克服这些困难&#xff0c;压电谐振器&#xff08;PR&#xff09;通过利用潜在的压电效应&#xff0c;以振动模式而不是电模式存储能量。 即使 PR 的使用在效率和功率密度方面改进了…

关于开源许可协议

开源许可协议 引用开源代码之后是否可以保留知识产权&#xff0c;针对不同的开源协议要进行开源扫描。基于BSD、MIT和Apache三种是可以闭源。但是基于GPL、LGPL和Mozilla的开源方案必须同步开源。

2024年接口测试高频面试题及答案

1. 什么是接口测试&#xff1f; •接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求 •测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系 2. 为什么要做接口…

【大模型从入门到精通32】开源库框架LangChain RAG 系统中的问答技术2

这里写目录标题 探索高级问答链类型MapReduce 和 Refine 技术 实用建议和最佳实践解决 RetrievalQA 限制结论进一步阅读和探索理论问题实践问题 探索高级问答链类型 MapReduce 和 Refine 技术 MapReduce 和 Refine 是设计用来规避由语言模型 (LM) 上下文窗口大小所导致的限制…

Pulsar官方文档学习笔记——消息机制

pulsar 基于3.x最新官方文档学习记录 概念与架构 典型的推送订阅模式。生产者发送消息&#xff0c;消费者订阅topic消费信息并回应ACK。订阅创建后&#xff0c;Pulsar会保留所有消息。仅消息被所有订阅 成功消费了才会丢弃&#xff08;可以配置消息保留机制保留一定量&#…

裸金属服务器和裸金属云服务器:区别、优势与选择

首先&#xff0c;必须肯定的是&#xff1a;裸金属服务器和裸金属云服务器是有区别的。 ‌ 二者的概述 裸金属服务器&#xff08;‌Bare Metal Server&#xff09;‌是一种物理服务器&#xff0c;‌它直接在硬件上运行&#xff0c;‌没有额外的虚拟化层。‌这意味着每个应用程…

封装通用第三方平台用户表(微信开放平台)

文章目录 一. 注册微信开放平台1.1 开发者资质认证1.2 应用申请1.3 配置应用 二.通用数据库表设计三.入库实体类四. 对接第三方平台4.1 微信开放平台VO对象4.2 通用方法 我们的系统可能要对接很多第三方系统&#xff0c;为了便利用户授权使用和对多平台账户的管理。有必要设计通…

2024 江苏省第二届数据安全技术应用职业技能竞赛 初赛 部分wp

文章目录 一、前言二、参考文章三、题目&#xff08;解析&#xff09;数据安全解题赛1、ds_0602&#xff08;30分&#xff09;2、333.file&#xff08;45分&#xff09;3、pf文件分析&#xff08;35分&#xff09;4、丢失的资料&#xff08;45分&#xff09;5、greatphp&#x…

基于SpringBoot的来访管理系统的设计与实现-

TOC springboot600基于SpringBoot的来访管理系统的设计与实现---论文 绪 论 1.1项目研究的背景 随着科学技术发展&#xff0c;计算机已成为人们生活中必不可少的生活办公工具&#xff0c;在这样的背景下&#xff0c;网络技术被应用到各个方面&#xff0c;为了提高办公生活效…

Android类加载机制简介

一、前言 随着 Android 技术的不断发展&#xff0c;对其内部机制的探索也日益深入。类加载机制作为 Android 运行时环境的核心组成部分之一&#xff0c;影响着应用的性能、安全性以及可扩展性。通过对 Android 类加载机制的研究&#xff0c;开发者可以更好地优化代码结构、提高…

requests请求库入门使用

requests 库是一个功能强大且易于使用的 HTTP 请求库&#xff0c;适用于各种网络请求任务。它简化了 HTTP 请求的发送过程&#xff0c;并提供了丰富的功能来处理各种网络请求和响应。 1.安装 首先&#xff0c;你需要安装 requests 库。如果你还没有安装&#xff0c;可以使用 …

网优学习干货:2.6G仿真操作(1)

2.6G工程建立——整体仿真过程 针对覆盖仿真、速率仿真及蒙特卡洛仿真的说明 覆盖仿真&#xff1a;覆盖仿真主要用于评估网络覆盖性能。基于MassiveMIMO天线、射线传模或经验传模进行覆盖预测&#xff0c;计算链路损耗后&#xff0c;基于栅格分析估算小区覆盖预测的各项指标&am…