Maven基础知识

Maven是一款用于管理和构建Java项目的工具

Maven的作用:

  • 依赖管理:方便快捷的管理项目依赖的jar包,避免版本冲突问题
  • 统一项目结构:提供标准统一的项目结构
  • 项目构建:标准跨平台的自动化项目构建方式

maven创建的工程目录

  1. src下存放的main和test
  2. main是实际代码资源
  3. java是Java源文件目录
  4. resources是配置文件目录
  5. test是测试项目资源
  6. pom.xml是项目配置文件

pom中存放了描述当前工程的信息

Maven坐标

Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置

使用坐标来定义项目或引入项目所需要的依赖

<groupId></groupId>存放的Maven创建的工程的包的名字
<artifactId></artifactId>存放的Maven创建的工程的名字

<version></version>当前项目的版本

这些叫做Maven的坐标

依赖管理

依赖配置

依赖:指当前项目运行所需要的jar包,一个项目可以引入多个依赖

配置:

  1. 在pom.xml中编写<dependencies>标签
  2. 在<dependencies>标签中,使用<dependency>引入坐标
  3. 定义坐标的groupId,artifactId,version
  4. 点击刷新按钮,引入最新加入的坐标
依赖传递

依赖具有传递性

A项目当中依赖了jar包资源和b项目,b项目当中依赖了c项目和jar包资源

即使在a项目中没有添加c项目中的依赖也会有c项目中的依赖,这就叫做依赖的传递

直接依赖:在当前项目中通过依赖配置建立的依赖关系,如a和b与另一个jar包

间接依赖:被依赖资源如果依赖其他资源,当前项目间接依赖其他资源

如b项目依赖其他jar包和c项目那么a项目也会间接依赖c项目和jar包

排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本

在直接依赖的依赖中添加exclusion标签包裹住不想要使用的间接依赖

<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
依赖范围

依赖的jar包默认情况下,可以在任何地方使用,可以通过<scope></scope>设置其作用范围

scope默认是compile可以在主程序,测试程序,打包中使用

test可以在测试程序中使用

provided可以在主程序中和测试程序中使用

runtime可以在测试程序中和打包时使用

生命周期

Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一

Maven有三套相互独立的生命周期

  • clean:清理工作
  • default:编译,测试,打包,安装,部署
  • site:生成站点,发布站点

每一套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段

主要的生命周期阶段

  1. clean:移除上一次构建生成的文件
  2. compile:编译项目源代码
  3. test:使用合适的单元测试框架运行测试
  4. package:将编译后的文件打包
  5. install:安装项目到本地仓库

同一套生命周期当中,运行后面的阶段前面的阶段都要运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206544.shtml

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

相关文章

Linux下的I2C驱动框架以及代码实现

参考资料&#xff1a; 1、Linux IIC 驱动分析 — 框架分析 - 知乎 (zhihu.com) 2、《Linux驱动开发指南》第十一章 3、《正点原子 I.MX6U嵌入式Linux驱动开发指南 V1.6》 4、《Linux设备驱动开发详解》 代码版本&#xff1a;Linux4.1.15 阅读本文需要先有一定的I2C基础以及Linu…

【UE5】瞬移+马赛克过渡效果

效果 步骤 1. 新建一个工程&#xff0c;创建一个Basic关卡 2. 添加第三人称游戏资源到内容浏览器 3. 新建一个材质&#xff0c;这里命名为“M_Pixel” 打开“M_Pixel”&#xff0c;设置材质域为“后期处理” 在材质图表中添加如下节点 此时效果如下&#xff0c;已经有马赛克的…

git 常用部分方法

git init // 初始化 在工作路径上创建主分支 git clone 地址 // 克隆远程仓库 git clone -b 分支名 地址 // 克隆分支的代码到本地 git status // 查看状态 git add 文件名 // 将某个文件存入暂存区 git checkout -- file // 撤销工作区的修改 例如git checkout -- readMe…

华为云安全组规则

初始发布cce,快被安全组搞死了。现在把自己的研究成果综合一下,在这里给自己留痕,希望对迷惑的朋友有帮助。 先搞懂安全组是个啥东东: 安全组规则 操作场景 安全组实际是网络流量访问策略,通过访问策略可以控制流量入方向规则和出方向规则,通过这些规则可以为加入安全组…

聊聊AsyncHttpClient的ChannelPool

序 本文主要研究一下AsyncHttpClient的ChannelPool ChannelPool org/asynchttpclient/channel/ChannelPool.java public interface ChannelPool {/*** Add a channel to the pool** param channel an I/O channel* param partitionKey a key used to retrieve the cac…

java对文件夹,文件操作

1、使用Java自带的File类来创建文件夹 String dirName "/data/file/temporaryfiles/"; File dir new File(dirName); if (!dir.exists()) {try {dir.mkdir();} catch (SecurityException se) {System.out.println("文件创建失败");}} else {System.out.…

视频处理关键知识

1 引言 视频技术发展到现在已经有100多年的历史&#xff0c;虽然比照相技术历史时间短&#xff0c;但在过去很长一段时间之内都是最重要的媒体。由于互联网在新世纪的崛起&#xff0c;使得传统的媒体技术有了更好的发展平台&#xff0c;应运而生了新的多媒体技术。而多媒体技术…

【android开发-21】android中调用系统摄像头camera拍照和相册的用法详解

1&#xff0c;调用摄像头 在Android中&#xff0c;调用系统摄像头拍照需要使用Intent来启动Camera应用&#xff0c;并在应用中设置相应的权限。下面是一个简单的例子&#xff1a; // 创建一个Intent对象&#xff0c;指定要执行的动作是拍照 Intent intent new Intent(Medi…

FITC-Dextran标记的抗体-科研

FITC-Dextran标记的抗体是一种将FITC&#xff08;荧光素异硫氰酸酯&#xff09;共价连接到抗体分子上的生物标记方法。这种标记使抗体具有荧光性质&#xff0c;可以用于免疫组化、流式细胞仪分析、荧光显微镜观察等各种应用中。以下是制备FITC-Dextran标记的抗体的基本步骤&…

php 导入excel

if($_FILES[files]){ $uploadfile$_FILES[files]; $name$uploadfile[name];//文件原名 $type$uploadfile[type]; $tmp_name$uploadfile[tmp_name]; $size$uploadfile[size]; $error$uploadfile[error]; // $uploadurl../../../d/uploads/; //上传路径 $path./uploads/; //上传路…

【教程】逻辑回归怎么做多分类

目录 一、逻辑回归模型介绍 1.1 逻辑回归模型简介 1.2 逻辑回归二分类模型 1.3 逻辑回归多分类模型 二、如何实现逻辑回归二分类 2.1 逻辑回归二分类例子 2.2 逻辑回归二分类实现代码 三、如何实现一个逻辑回归多分类 3.1 逻辑回归多分类问题 3.1 逻辑回归多分类的代…

Leetcode—198.打家劫舍【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—198.打家劫舍 算法思想 具体思路 首先&#xff0c;我们从上面的题目描述中抽象出题意。 ● 从一个非负整数数组中找到一个子序列&#xff0c;并且该子序列的和最大 ● 子序列中每个数的位置不能够相邻。举例来讲&…

Leetcode—1466.重新规划路线【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—1466.重新规划路线 算法思想 实现代码 class Solution { public:int minReorder(int n, vector<vector<int>>& connections) {vector<pair<int, int>> g[n];for(auto e: connections) {in…

JS的变量提升ES6基础

JS的变量提升&ES6基础 变量var关键字var声明作用域实例一实例二多个变量 变量提升 let关键字暂时性死区全局声明for循环中使用let const关键字 变量 ECMAScript变量时松散类型的&#xff0c;意思是变量可以用于保存任何类型的数据。 声明变量&#xff1a;var 、const、let …

阶梯电价1_分支结构 C语言xdoj27

题目&#xff1a;阶梯电价计费 类别&#xff1a;流程控制 时间限制&#xff1a;2S 内存限制&#xff1a;10000Kb 问题描述&#xff1a; 电价分三个档次&#xff0c;[0,110]度电&#xff0c;每度电0.5元&#xff1b;(110,210]度电&#xff0c;超出110部分每度电0.55元&…

git-vscode

git-vscode ctrlshiftp 创建分支 create branch 直接切到新的分支了 切换分支 直接点左下角自己选择 vscode中配置仓库 https://blog.csdn.net/zora_55/article/details/129709251 推送tag tag作用就是在 Git 中&#xff0c;标记存储库历史记录中特定提交的一种方式。t…

【Linux】无法使用 screenfetch 查看系统信息,报错 command not found: screenfetch

问题描述 screenfetch是一个命令行工具&#xff0c;用于在终端显示系统的硬件和软件信息。它会收集各种系统和环境的信息&#xff0c;并以彩色 ASCII 艺术的形式在终端中展示出来。 当你在终端中运行screenfetch命令时&#xff0c;它会检测你的操作系统、主机名、内核版本、C…

IntelliJ IDEA 2023.3发布,更新AI助手,运行相当流畅,再也不卡了

这两天Jetbrains来了一波大的更新&#xff0c;推出了2023.3正式版&#xff0c;均做了不少优化&#xff0c;最重要的是大家期待已久的Ai Assistant插件本次更新也正式推出&#xff0c;助力大家提高Coding效率。但是很遗憾&#xff0c;目前我们无法使用&#xff0c;因为该插件底层…

HTTPS加密协议:保护你的网络安全

引言&#xff1a; 随着互联网的普及&#xff0c;我们越来越依赖网络来获取信息、进行交流和完成各种任务。然而&#xff0c;网络的开放性和便利性也带来了一些安全隐患&#xff0c;如数据泄露、身份盗窃等。为了保护用户的隐私和安全&#xff0c;https加密协议应运而生。本文将…

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…