2024-Java-Maven学习笔记

Maven

Maven是一个Java项目管理和构建工具,作用:定义(规范)项目结构、项目依赖、使用统一的方式自动化构建(clean、compile)。

提供了一套依赖管理机制:利用仓库统一管理jar包,利用依赖传递的特性解决jar包版本冲突问题。

视频教程

总结

核心掌握目标
安装maven安装、环境变量、maven配置文件修改
工程创建gav属性理解、IDEA创建工程、项目结构
依赖管理依赖添加、依赖传递、版本提取、导入依赖错误解决
构建管理构建过程、构建场景、构建周期
继承和聚合理解继承和聚合的作用和配置
  • 所有依赖在父maven项目中管理,子maven无需使用版本;
  • 可选依赖放入;
  • 所有依赖的版本号通过管理;
  • 管理所有子模块;

Maven配置文件

需要修改的地方如下:

<!--  jar包下载本地地址 -->
<localRepository>D:\data\maven-repository</localRepository><!--  jar包下载仓库 -->
<mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror><mirror><id>huaweicloud</id><mirrorOf>*</mirrorOf><name>huawei Cloud</name><url>https://repo.huaweicloud.com/repository/maven/</url></mirror><mirror><id>central</id><mirrorOf>central</mirrorOf><name>Maven Repository Switchboard</name><url>https://repo2.maven.org/maven2/</url></mirror></mirrors>

约定大于配置

pom.xml详解

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 本工程的坐标信息,保证唯一性 --><groupId>com.lywtimer</groupId><artifactId>j-pure</artifactId><version>1.0-SNAPSHOT</version><!-- 设置打包方式 默认jar,常用war,pom --><packaging>pom</packaging><modules><module>backend</module><module>demo</module></modules><!--通常去设置依赖的版本好处:统一管理版本;多个jar包使用同一个版本时,简化配置${junit.jupiter.version}--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><com.mysql.version>8.3.0</com.mysql.version><org.junit.jupiter.version>5.10.2</org.junit.jupiter.version></properties><!--通过一个坐标信息去引用jar包去 https://mvnrepository.com/ 中央仓库找需要确认到本地仓库,如果出现异常问题可以删掉,重新下载。 D:\data\maven-repository\org\junit\jupiter\junit-jupiter-api\5.10.2--><!-- 对子工程必须要的依赖,放在这里 --><dependencies><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>${com.mysql.version}</version></dependency></dependencies><!--对子工程不是必须要的依赖,放在这里虽然子工程还需要做一次依赖,但可以做版本控制--><dependencyManagement><dependencies><!--引用本地的项目,需要 install--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>${org.junit.jupiter.version}</version><!--手动排除依赖--><exclusions><!--                <exclusion>--><!--                    <groupId>com.mysql</groupId>--><!--                    <artifactId>mysql-connector-j</artifactId>--><!--                </exclusion>--></exclusions><!--依赖范围编译(main/java)测试(main/test)运行/打包(包含在打的包中)test       编译× 测试√  打包×     junitprovided   编译√ 测试√  打包×     servletcompile    编译√ 测试√  打包√     默认runtime    编译× 测试√  打包√     反射、数据库驱动system = provided 不会依赖仓库中的jar包,结合<systemPath>使用,已经废弃1.首先 依赖范围建议,哪怕所有的范围都设置compile,也不影响正常使用2.中央仓库会提供scope,IDEA有自动补全功能3.大多数包都是compile--><!--作用访问是 test、provided 就不会传递--><scope>test</scope><!--是否传递 默认是false,会传递--><optional>false</optional></dependency></dependencies></dependencyManagement>
</project>

生命周期

生命周期会依次执行 clean validate compile test package verify installTest* 的类会在 test 执行的时候被扫描install:会下载到本地仓库

依赖传递的配置

#被依赖项目的pom.xml<groupId>com.mszlu</groupId><artifactId>trans</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version><!--作用访问是 test、provided 就不会传递--><scope>compile</scope><!--是否传递 默认是false,会传递--><optional>true</optional></dependency></dependencies>#依赖项目的pom.xml
<dependencies><!--引用本地的项目,需要 install--><dependency><groupId>com.mszlu</groupId><artifactId>trans</artifactId><version>1.0-SNAPSHOT</version></dependency>
</dependencies>#如果被依赖项目无法处理,通过两种方式可以解除依赖
#引入不一致版本的依赖(覆盖)
#使用exclusion手动排除

创建聚合工程

右键父工程目录 → New → Module → Parent选 None

<!-- 父工程聚合子工程 pom.xml --><modules><module>backend</module><module>demo</module></modules><!-- 两个子工程依赖后,依赖就会传递 -->  
<!-- 在父工程中的生命周期方法会在所有管理的模块依次执行 -->  

Maven继承

聚合工程的另外一种体现,把依赖统一到父工程中。

<!-- 修改子工程的 pom.xml -->
<parent><groupId>org.example</groupId><artifactId>j-pure</artifactId><version>1.0-SNAPSHOT</version>
</parent><!-- 手动删除重复的配置 -->
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>

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

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

相关文章

阿里云(国内)安装nvm

更多文章&#xff0c;访问&#xff1a;阿里云&#xff08;国内&#xff09;安装nvm – 夜空中最亮的星 直接使用nvm脚本安装的时候一直失败&#xff0c;应该是国内网络的问题&#xff0c;使用下面方案进行解决&#xff1a; 下载 cd / wget https://github.com/nvm-sh/nvm/arch…

机器学习-09-图像处理01-理论

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中图像处理技术。 参考 02图像知识 色彩基础知识整理-色相、饱和度、明度、色调 图像特征提取&#xff08;VGG和Resnet特征提取卷积过程详解&#xff09; Python图像处理入门 【人工智能】PythonOpenCV…

线程池-线程池分类

线程池分类 FixedThreadPool&#xff1a;固定大小线程池&#xff0c;线程数量固定&#xff0c;不会自动扩容或缩容。 CachedThreadPool&#xff1a;缓存线程池&#xff0c;线程数量不固定&#xff0c;根据需要自动扩容或缩容。适用于执行大量短时间任务的场景。 SingleThrea…

HttpClient、OKhttp、RestTemplate接口调用对比( Java HTTP 客户端)

文章目录 HttpClient、OKhttp、RestTemplate接口调用对比HttpClientOkHttprestTemplate HttpClient、OKhttp、RestTemplate接口调用对比 HttpClient、OkHttp 和 RestTemplate 是三种常用的 Java HTTP 客户端库&#xff0c;它们都可以用于发送 HTTP 请求和接收 HTTP 响应&#…

微服务学习(黑马)

学习黑马的微服务课程的笔记 导学 微服务架构 认识微服务 SpringCloud spring.io/projects/spring-cloud/ 服务拆分和远程调用 根据订单id查询订单功能 存在的问题 硬编码 eureka注册中心 搭建eureka 服务注册 在order-service中完成服务拉取 Ribbon负载均衡 Nacos注册中心…

水利自动化控制系统平台介绍

水利自动化控制系统平台介绍 在当今社会&#xff0c;水资源的管理和保护日益成为全球关注的重要议题。随着科技的进步和信息化的发展&#xff0c;水利监测系统作为一种集成了现代信息技术、自动化控制技术以及环境监测技术的综合性平台&#xff0c;正在逐步改变传统的水利管理模…

快照技术的基本介绍

目录 一、概述 二、名词解释 三、镜像分离 四、COW 五、ROW 六、参考 一、概述 全球网络存储工业协会 SNIA&#xff08;Storage Networking Industry Association&#xff09;对快照&#xff08;Snapshot&#xff09;的定义是&#xff1a;关于指定数据集合的一个完全可用…

广佛站点导航助手小程序产品使用说明书

一、产品简介 广佛站点导航助手小程序是一款专为广佛地区用户设计的地铁导航工具。通过获取用户的实时位置信息&#xff0c;小程序能够迅速定位并展示离用户最近的三个地铁站点。用户可以通过本小程序轻松查找地铁站点&#xff0c;规划出行路线&#xff0c;提高出行效率。 二、…

【背】蓝桥杯大模板

蓝桥杯大模板 /* 头文件声明区 */ #include <STC15F2K60S2.H>//单片机寄存器专用头文件 #include <Init.h>//初始化底层驱动专用头文件 #include <Led.h>//Led底层驱动专用头文件 #include <Key.h>//按键底层驱动专用头文件 #include <Seg.h>//…

Win11 WSL2 install Ubuntu20.04 and Seismic Unix

Win11系统&#xff0c;先启用或关闭Windows功能&#xff0c;勾选“适用于Linux的Windows子系统”和“虚拟机平台”两项 设置wsl默认版本为wsl2&#xff0c;并更新 wsl --list --verbose # 查看安装版本及内容 wsl --set-default-version 2 # 设置wsl默认版本为wsl2 # 已安装…

Debian 安装 Docker

Debian 安装 Docker。 这是官方安装文档 Install Docker Engine on Debian | Docker DocsLearn how to install Docker Engine on Debian. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/i…

我的 Lisp 学习历程:从新手到熟练掌握

Lisp&#xff0c;作为一种功能强大且具有独特思维方式的编程语言&#xff0c;一直以来都吸引着我。在我的编程之旅中&#xff0c;我决定深入学习 Lisp&#xff0c;并在这个过程中经历了许多挑战和成长。本文将分享我在 Lisp 学习过程中的心路历程。 第一次接触 Lisp&#xff0…

计算机网络——抓取icmp包

前言 本博客是博主用于记录计算机网络实验的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 抓包 我们是用Wireshark工具来进行抓包的。 ​在安装时候一路打勾安装即可&#xff0c;不过最后那个因为是英文&#xff0c;一定要看清&#xff0c;点了立即重启&am…

mars3d.MaterialType.Image2修改配置面状:图片2的speed数值实现动画效果说明

摘要&#xff1a; mars3d.MaterialType.Image2修改配置面状&#xff1a;图片2的speed数值实现动画效果说明 前提&#xff1a; 1.在示例中&#xff0c;尝试给mars3d.MaterialType.Image2材质的图片加上speed参数&#xff0c;实现动画效果&#xff0c;但是没有看到流动效果说明…

去掉el-date-picker弹窗默认回显当前月份的方法

打开日期弹窗&#xff0c;默认会显示当前月份&#xff0c;如图 会发现加了穿透&#xff1a;&#xff1a;v-deep 样式也不生效 .el-month-table .today .cell {color: pink&#xff1b;font-weight: 400;}要让 popper-class“xclass” :append-to-body“false” 这俩配合着使用…

界面设计【1】-项目的UI设计css

引言&#xff1a; 本篇博客对简单的css html界面设计做了简要介绍 这篇博客主要就是介绍了做横向项目中&#xff0c;CSS界面设计与优化。 界面设计【1】-项目的UI设计css 1. 什么是css?2. css编程demo3. 可视化效果 1. 什么是css? CSS是层叠样式表&#xff08;Cascading S…

每日一题 — 将 x 减到 0 的最小操作数

思路&#xff1a; 题目要求是让我们从数组的最左端和最右端进行操作&#xff0c;这样的话解题的难度大大提升&#xff0c;我们可以用 正难则反 的思想&#xff1a; 题目中要求是减去数组中的数刚好等于X&#xff0c;我们可以转换成 数组中某一段的和等于 数组的总长减去X(sum -…

Godot插值、贝塞尔曲线和Astar寻路

一、插值 线性插值是采用一次多项式上进行的插值计算&#xff0c;任意给定两个值A和B&#xff0c;那么在A和B之间的任意值可以定义为&#xff1a;P(t) A * (1 - t) B * t&#xff0c;0 < t < 1。 数学中用于线性拟合&#xff0c;游戏应用可以做出跟随效果&#xff08;…

vivado FFT IP核使用

matlab生成正弦函数 采样点数为512&#xff0c;每个采样点位宽为16位&#xff0c;其中最高位为符号为&#xff08;0正&#xff0c;1负&#xff09;。换句话说&#xff0c;如果用ROM存储正弦函数的coe文件的话&#xff0c;ROM ip核的位宽设置为16&#xff0c;深度为512. clear…

5G智慧港口简介(二)

5G 技术赋能智慧港口 5G 标准的制定是一个不断发展和完善的过程:第一版国际标准(Rel-15)已全部完成,第二版增强标准(Rel-16)正在制定中,预计 2020 年 3 月完成,面向演进的 Rel-17 标准已启动技术布局,进入立项规划阶段。 5G 是一张具备大速率、大连接、低时延的网络…