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

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.kler.cn/a/162045.html

相关文章:

  • Java中的面向对象编程基础——定义类、对象、方法和属性
  • 【Vue】Vue3.0(二十二) v-model 在原始Dom元素、自定义输入组件中双向绑定的底层实现原理详解
  • pulsar bookies 磁盘资源无法释放问题排查
  • 新手 Vue 项目运行
  • [面试]Mysql的锁机制
  • IDM扩展添加到Edge浏览器
  • ingress介绍和ingress通过LoadBalancer暴露服务配置
  • GateWay的路由与全局过滤器
  • Linux中的网络时间服务器
  • 新书推荐——《Copilot和ChatGPT编程体验:挑战24个正则表达式难题》
  • 『TypeScript』从零开始编写你的第一个TypeScript程序
  • HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居
  • Linux——操作系统与进程的基础概念
  • python学习:opencv学习和numpy学习(持续更新)
  • python pandas dataframe常用数据处理总结
  • macOS 获取文件夹大小
  • 【学习记录】从0开始的Linux学习之旅——字符型设备驱动及应用
  • 常用性能工具与性能分析
  • 05 JQuery基础入门
  • 时间序列预测实战(二十二)TCN-LSTM实现单元和多元长期预测(专为新手编写的自研架构)
  • Qt实现右键菜单
  • Java研学-Lambda表达式
  • Python函数默认参数设置
  • C语言验证哥德巴赫猜想
  • AttributeError: module ‘importlib_resources‘ has no attribute ‘path‘ 解决方案
  • cpu 300% 爆满 内存占用不高 排查