十四、Maven(2)

news2024/11/26 23:32:29

🌻🌻目录

  • 一、maven项目的目录结构?---约定
  • 二、在创建maven项目的时候
  • 三、依赖
  • 四、依赖的传递性
  • 五、依赖的排除性
  • 六、继承---项目结构的设计
  • 七、聚合---项目的设计方式

一、maven项目的目录结构?—约定

Maven是自动化构建工具,如何实现自动化?

在这里插入图片描述

  • 1、pom.xml是maven项目的标志,一个maven项目没有pom.xml文件那么就不是maven项目,类似于web.xml对于web项目的作用
  • 2、Main中java文件夹用来存放项目中的除了测试程序以外的和项目有关的java源程序
  • 3、Main中resources文件夹存放的是项目中的与项目有关的配置文件
  • 4、main最后项目部署的时候源程序的字节码文件以及配置文件要部署的
  • 5、Test中的java文件夹存放测试程序的,和项目没有关系
  • 6、Test中的resources文件存放的与测试有关的配置文件,和项目没有关系
  • 7、test中的内容不参与部署的

二、在创建maven项目的时候

  • 1、组名—group id、项目名—artifact id、版本号—version
  • 2、以上的三个统称maven的坐标
  • 3、Maven中的坐标是用来唯一确定一个jar、war包在仓库中的位置

三、依赖

  • 1、什么是依赖?所谓的依赖就是当前项目要使用到的其他方提供的jar包在maven的pom中进行设置,这个设置是依赖设置,如何设置?

在这里插入图片描述

<!-- 依赖的设置 -->
<dependencies>
	<!-- 可以设置多个依赖 -->
	<!-- 单元测试的依赖 -->
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
	</dependency>
</dependencies>

2、依赖的版本统一管理

在这里插入图片描述

<properties>
  	<!-- 自定义标签 -->
  	<spring-version>4.3.24.RELEASE</spring-version>
  </properties>
  
  <!-- 依赖的统一管理 -->
 <dependencies>
 	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-webmvc</artifactId>
 		<version>${spring-version}</version>
 	</dependency>
 	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-jdbc</artifactId>
 		<version>${spring-version}</version>
 	</dependency>
 	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-aspects</artifactId>
 		<version>${spring-version}</version>
 	</dependency>
 </dependencies>

四、依赖的传递性

1、当甲在使用乙的jar包的时候,由于乙的jar包对应的项目中使用到了丙的jar包,所以甲在使用乙的jar包的时候,同时会把丙的jar包一起依赖过来;从乙把丙的jar包传递到了甲
2、在依赖传递的过程中,可能存在版本的冲突问题

  • 1)就近原则和声明原则
  • 2)声明原则:是指在pom.xml中设置依赖的顺序,决定着有版本冲突的时候最终版本是哪一个;靠上的配置是最终的版本,如下例子:最终版本是05传递的版本

在这里插入图片描述

 <!-- 依赖03项目和04项目 -->
 <dependencies>
 	<!-- 当间接依赖出现版本冲突的时候,最后的版本是此处靠上的配置的 -->
  	  <dependency>
  			<groupId>com.glory.zhi</groupId>
  			<artifactId>day10-maven-03</artifactId>
  			<version>1.0</version>
  		</dependency>
  		
  		<dependency>
  			<groupId>com.glory.zhi</groupId>
  			<artifactId>day10-maven-04</artifactId>
  			<version>1.0</version>
  		</dependency>
 </dependencies>
  • 3)就近原则
    直接依赖比间接依赖要近,所以最终版本是直接依赖的版本

在这里插入图片描述

<dependencies>
  <dependency>
		<groupId>com.glory.zhi</groupId>
		<artifactId>day10-maven-03</artifactId>
		<version>1.0</version>
	</dependency>
	
	<dependency>
		<groupId>com.glory.zhi</groupId>
		<artifactId>day10-maven-04</artifactId>
		<version>1.0</version>
	</dependency>
		<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>4.3.23.RELEASE</version>
	</dependency>
</dependencies>

五、依赖的排除性

1、从当前项目中将传递来的其他的依赖排除掉

排除前:

在这里插入图片描述

排除后(手动添加排除):

在这里插入图片描述

排除后(操作eclipse排除):

在这里插入图片描述

保存即可排除:

在这里插入图片描述

<dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>4.3.23.RELEASE</version>
		<exclusions>
			<exclusion>
				<groupId>org.springframework</groupId>
				<artifactId>spring-beans</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
</dependencies>

六、继承—项目结构的设计

1、可以创建maven父工程/或者父项目,然后创建maven的子工程/子项目继承父工程
2、Maven的父项目必须是pom类型的

父项目的创建:

在这里插入图片描述

子项目的创建:

在这里插入图片描述

3、可以实现依赖的统一管理
第一种统一管理方式:此方式所有的子项目中用到的依赖都是相同的
父项目配置如下

<dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>${spring-version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>${spring-version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aspects</artifactId>
		<version>${spring-version}</version>
	</dependency>
</dependencies>

第二种方式:不同的子项目中使用的依赖是不同的,父项目配置如下

在这里插入图片描述

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring-version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring-version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring-version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>

子项目配置如下

在这里插入图片描述

<dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aspects</artifactId>
	</dependency>
</dependencies>

七、聚合—项目的设计方式

1、聚合是指将项目拆分成为多个模块,最后再由模块聚合到一起形成完整的项目
2、聚合项目必须是pom类型

在这里插入图片描述

聚合项目的创建:

父项目的创建

(1)

在这里插入图片描述

(2)

在这里插入图片描述

子项目的创建:

(1)

在这里插入图片描述
(2)

在这里插入图片描述

……

SSM项目整合

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

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

相关文章

java用pdf.js在线预览pdf文件(jeecg框架)

最近在jeecg框架的后台要做一个pdf在线预览的页面功能&#xff0c;可是每次点预览都是下载&#xff0c;所以就要解决这个问题&#xff0c;现在解决了&#xff0c;记录一下&#xff0c;防止后面踩坑。 先放代码&#xff1a; 下面是点“预览”按钮的点击事件&#xff0c;代码放…

算法基础-----【动态规划】

动态规划(待完善) 动规五部曲分别为&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式&#xff08;状态转移公式&#xff09;dp数组如何初始化确定遍历顺序举例推导dp数组、 动态规划的核心就是递归剪枝&#xff08;存储键值&#xff0c;…

TS_开发一个项目

目录 一、编译一个TS文件 1.安装TypeScript 2.创建TS文件 3.编译文件 4.用Webpack打包TS ①下载依赖 ②创建文件 ③启动项目 TypeScript是微软开发的一个开源的编程语言&#xff0c;通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或…

simulink开发stm32,使用中断模块,无法产生中断,其中包括使用timer模块,以及ADC都无法产生中断,需要注意的地方

1&#xff0c;其中包括使用timer模块&#xff0c;以及ADC都无法产生中断&#xff0c;需要注意的地方 原来是需要在配置文件里开启一下timer的中断&#xff0c;其他模块自动加载ioc就可以了&#xff0c;这个timer需要注意力&#xff0c;需要自己勾选一下 如下图&#xff1a; 看…

Android简介-历史、API等级与体系结构

1. Android简介 Android是一种基于Linux内核的自由及开放源代码的操作系统。最初是由安迪鲁宾(Andy Rubin)开发的一款相机操作系统。2005年8月被Google收购。2007年11月&#xff0c;Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。…

【漏洞复现】I doc view——任意文件读取

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 I doc view 在线文档预览是一个用于查看、编辑、管理文档的工具…

Why is Kafka fast?(Kafka性能基石)

Kafka概述 Why is kafka fast&#xff1f; 思考一下&#xff0c;当我们在讨论Kafka快的时候我们是在谈论什么呢&#xff1f;What does it even mean that Kafka is fast? 我们是在谈论kafka的低延迟&#xff08;low latency&#xff09;还是在讨论吞吐量&#xff08;through…

CTF-PWN-LLVM-【红帽杯-2021 simpleVM】

文章目录 参考检查逆向漏洞思路调试定位到PASS名exp 参考 https://bbs.kanxue.com/thread-274259.htm#msg_header_h2_6 http://www.blackbird.wang/2022/08/30/LLVM-PASS%E7%B1%BBpwn%E9%A2%98%E6%80%BB%E7%BB%93/ 检查 因为是用opt运行&#xff0c;加载动态库VMPASS.so的P…

【ACM_2023】3D Gaussian Splatting for Real-Time Radiance Field Rendering

【ACM_2023】3D Gaussian Splatting for Real-Time Radiance Field Rendering 一、前言Abstract1 INTRODUCTION2 RELATED WORK2.1 Traditional Scene Reconstruction and Rendering2.2 Neural Rendering and Radiance Fields2.3 Point-Based Rendering and Radiance Fields 3 O…

15秒下雨短视频:成都柏煜文化传媒有限公司

15秒下雨短视频&#xff1a;瞬间的诗意与情感共鸣 在数字时代的浪潮中&#xff0c;短视频以其独特的魅力&#xff0c;成为了人们生活中不可或缺的一部分。其中&#xff0c;一段仅15秒的下雨短视频&#xff0c;成都柏煜文化传媒有限公司 或许在时间长河中只是一瞬间&#xff0c…

pdf已加密如何解除?解密密码的两个方法【可加密】

电脑文件加密的目的就是保护重要信息&#xff0c;防止数据泄露。如果需要解除密码&#xff0c;应该如何操作呢&#xff1f;pdf已加密如何解除&#xff1f;本文整理了以下两种解除文件方法&#xff0c;希望能够帮到有需要的朋友们&#xff01; 方法一、使用金舟文件夹加密大师解…

【环境配置】ubuntu中 Docker的安装

前言 Docker的使用&#xff0c;一直没有系统的梳理和记录&#xff0c;刚好最近看视频又再次的全面介绍到docker。于是记录下方便后面自己的使用&#xff0c;毕竟安装过程中还是会存在小的不丝滑。 1 Docker的简单介绍 这里的介绍来自于大模型的问答&#xff08;LLM时代的到来&a…

Python酷库之旅-第三方库openpyxl(15)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

OpenAI推出自我改进AI- CriticGPT

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【Java】字节数组 pcm 与 wav 格式互转 (附原理概述)

前言 最近实现了一个文字转语音的功能&#xff0c;语音引擎返回的是pcm格式的数据。需要转化成wav格式前端才能播放。本文首先会给出解决方案&#xff0c;后续会讲背后的原理。 场景 git 仓库 https://github.com/ChenghanY/pcm-wav-converter 1. pcm wav 转化工具类 入参和…

将CSV、Excel、XML文件转换为MySQL数据库

在平时的工作中&#xff0c;经常会遇到需要将文件数据导入到数据库中的情况。有些客户之前可能只使用Excel表格作为记录工具&#xff0c;但当数据量达到一定程度或者需要将数据导入到其他系统中时&#xff0c;就会很emo,因为Excel表格虽然方便&#xff0c;但在数据处理和管理方…

ORB-SLAM2同OpenMVS实现三维重建

ORB-SLAM2 位姿导出 Note: 为与OpenMVS进行对接本次进对ORB-SLAM2进行部分修改&#xff0c;使之可以为 OpenMVS提供稀疏点云、关键帧的位姿、内参&#xff0c;以及稀疏点云在各个View 中的可见性。 主要更改如下 . 在Map文件下增添如下函数 public: void Save(const string &a…

面包板的使用

概要 当你学习怎样去建立一个电路时&#xff0c;面包板是最基本、最简单的元件之一。由于板子上有很多小插孔&#xff0c;各种电子元器件可根据需要任意插入或拔出&#xff0c;免去了焊接的工序&#xff0c;节省了电路的组装时间&#xff0c;且元件可以重复使用&#xff0c;非…

论文学习:基于知识图谱的RAG进行客服问答

1.简介 文章名称&#xff1a; Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering&#xff08;基于知识图谱的RAG进行客服问答&#xff09; 2.摘要ABSTRACT 在客户服务技术支持中&#xff0c;迅速准确地检索相关的过往问题对于有…

爬虫笔记17——selenium框架的使用

selenium框架的使用 1、python程序安装selenium框架2、下载Chrome谷歌驱动3、selenium的基本使用4、多个标签页切换顺序混乱的问题 1、python程序安装selenium框架 # 在安装过程中最好限定框架版本为4.9.1 # pip install selenium 没有制定版本&#xff0c;非镜像下载也会比较…