2022年0902Maven的继承和利用Idea创建Maven工程的内容<第五课>

news/2024/5/4 12:15:29/文章来源:https://blog.csdn.net/qq_56248592/article/details/126670457

86cf07ad8cd34170bae6bd879defd8bd.png

目录

第一部分 Maven的继承

1 概念

2 作用

3 它的背景是:

4 它背后的需求是:

在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。 使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。 使用框架时所需要的 jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。 通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。

在一个工程中依赖多个 Spring 的 jar 包

使用 Spring 时要求所有 Spring 自己的 jar 包版本必须一致。为了能够对这些 jar 包的版本进行统一管理,我们使用继承这个机制,将所有版本信息统一在父工程中进行管理。

5 创建父类工程     

工程名称:pro03-maven-parent

工程创建好之后,要修改它的打包方式:

②创建模块工程

 

 

 6 解读 父类工程 的pom.xml文件

 1 坐标 pom.xml

2  maven的聚合

3 在父工程中写的程序 在子工程中没有被引用

在需要的地方使用${}的形式来引用自定义的属性名:

第二部分 Idea创建Maven的工程 

 然后Flash又完成了项目构建

 配值项目的maven仓库

 D:/softwhy/apache-maven-3.6.3  Maven的仓库的位置 本地仓库

D:\softwhy\apache-maven-3.6.3\conf\settings.xml  Maven的Setting.xml文件

D:\maven_repository  放下载的文件信息

创建模块

 

第一部分 Maven的继承

1 概念

Maven工程之间,A 工程继承 B 工程

B 工程:父工程 A 工程:子工程 本质上是 A 工程的 pom.xml 中的配置继承了 B 工程中 pom.xml 的配置。

2 作用

在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本。

3 它的背景是:

对一个比较大型的项目进行了模块拆分。 一个 project 下面,创建了很多个 module。 每一个 module 都需要配置自己的依赖信息。

4 它背后的需求是:

在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。 使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。 使用框架时所需要的 jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。 通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。

在一个工程中依赖多个 Spring 的 jar 包

TIP[INFO] +- org.springframework:spring-core:jar:4.0.0.RELEASE:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] +- org.springframework:spring-beans:jar:4.0.0.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:4.0.0.RELEASE:compile
[INFO] +- org.springframework:spring-expression:jar:4.0.0.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:4.0.0.RELEASE:compile
[INFO] | \- aopalliance:aopalliance:jar:1.0:compile

使用 Spring 时要求所有 Spring 自己的 jar 包版本必须一致。为了能够对这些 jar 包的版本进行统一管理,我们使用继承这个机制,将所有版本信息统一在父工程中进行管理。

5 创建父类工程     

创建的过程和前面创建Maven的Java项目一样,你可以点击这个连接进行查看我之前手动创建的Maven的Java项目,现在我们还是使用手动的方式来创建,后面会说如何使用开发工具idea进行创建。

工程名称:pro03-maven-parent

工程创建好之后,要修改它的打包方式:

<groupId>com.csdn.maven</groupId><artifactId>pro03-maven-parent</artifactId><version>1.0-SNAPSHOT</version><!-- 当前工程作为父工程,它要去管理子工程,所以打包方式必须是 pom --><packaging>pom</packaging>
只有打包方式为 pom 的 Maven 工程能够管理其他 Maven 工程。打包方式为 pom 的 Maven 工程中不写业务代码,它是专门管理其他 Maven 工程的工程。

②创建模块工程

模块工程类似于 IDEA 中的 module,所以需要进入 pro03-maven-parent 工程的根目录,然后运行 mvn archetype:generate 命令来创建模块工程。

模块工程类似于 IDEA 中的 module,所以需要进入 pro03-maven-parent 工程的根目录,然后运行 mvn archetype:generate 命令来创建模块工程。

假设,我们创建三个模块工程:

 

 

997f491ab0054312936449739b49bfc9.png

 6 解读 父类工程 的pom.xml文件

 1 坐标 pom.xml

<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.java.maven</groupId>
<artifactId>pr03-maven-java</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.0-SNAPSHOT</version>
<!--  修改他的打包方式 当前工程为父工程 要去管理其他工程 打包方式为pom  -->
<packaging>pom</packaging>
<name>pr03-maven-java</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

2  maven的聚合

<modules>
<module>pro04-maven-java</module>
<module>pro05-maven-java</module>
<module>pro06-maven-java</module>
</modules>

3 在父工程中写的程序 在子工程中没有被引用

<!--  使用dependencyManagement标签配置对依赖的管理  -->
<!--  被管理的依赖并没有真正被引入到工程  -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
####   然后在子工程中运行mvn dependency:list,效果如下: ```
TIP[INFO] org.springframework:spring-aop:jar:4.1.4.RELEASE:compile
[INFO] org.springframework:spring-core:jar:4.1.4.RELEASE:compile
[INFO] org.springframework:spring-context:jar:4.1.4.RELEASE:compile
[INFO] org.springframework:spring-beans:jar:4.1.4.RELEASE:compile
[INFO] org.springframework:spring-expression:jar:4.1.4.RELEASE:compile
```
<!-- 通过自定义属性,统一指定Spring的版本 -->
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>```xaml
<!-- 自定义标签,维护Spring版本数据 -->
<csdn.spring.version>4.3.6.RELEASE</csdn.spring.version>
```</properties>

在需要的地方使用${}的形式来引用自定义的属性名:

db720016367049c0b179b6eff0fa342c.png

 d974071b5d60492896d0dac419bb46be.png

 

00c54ed04aed4531a19c3552a6cf70cb.png

 9072acc6ac7f4a23a28bc69b8f1412a7.png

8e5a5d6d09b141d4b5b4ff3fcaf8c7a6.png

4105f9d9404e4911865d96d920e69264.png

6bbd0700f07043c1b136afd3e8a4dec4.png

d7f14ce4ad3647d08450d42a0ce28630.png

 

第二部分 Idea创建Maven的工程 

d8263add833749e38e14d0995c0c44cf.png

 

50f80c7d4e834412888a72787d219f63.png

 

aee523c70d4145eabeb277c67d00e15c.png

 然后Flash又完成了项目构建

0147bd11bb204ee9b6b462f082c1fa20.png

 配值项目的maven仓库

6101d86e36554cf3ace2a73db84cc8d7.png

 D:/softwhy/apache-maven-3.6.3  Maven的仓库的位置 本地仓库

2e11f53f79b8487ba6af5962e8658acd.png

 

D:\softwhy\apache-maven-3.6.3\conf\settings.xml  Maven的Setting.xml文件

b9b0a51e4815476084fec7c247a2d3dd.png

 

D:\maven_repository  放下载的文件信息

5ddfe970a58b49f181dd7938e6766e73.png

 

d8a73b4036444c6dbe16a199abfd67a9.png

 

<?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.idea.maven</groupId><artifactId>pro01-maven-idea-parent</artifactId><!--packaging idea自动将文件配置成功--><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>poro2-module-java</module></modules><!-- &lt;!&ndash;指定父工程&ndash;&gt;<packaging>pom</packaging>--></project>

创建模块

c88b0766b05b457ba9099e815e0f4616.png

 

 

 

 

 

8ed67e6d538a456e867ebe1388b149a0.png

 

e77b7a64eb3d4ea0a28ec8053c59eaf7.png

 

e01e986e721c4472855259a0b69c1fa2.png

 

 

 

 

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

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

相关文章

电脑无线5g网卡发现不了网件R7000的Wifi 5g网络

原因是因为 网件R7000的5g网络默认是100的频道&#xff0c; 把频道固定的153然后把路由器离拖线板和其他设备远一点

第十章Redis_主从复制

10.Redis_主从复制 文章目录10.Redis_主从复制10.1主从复制是什么?10.2主从复制能干嘛10.3怎么玩&#xff1a;主从复制10.3.1在根目录下创建myredis文件夹10.3.2复制/etc/redis.conf文件到myredis下&#xff0c;文件名和之前保持一致10.3.3配置一主两从&#xff0c;创建三个配…

687 最长同值路径——Leetcode 天天刷(2022.9.2)【DFS】

687 最长同值路径——Leetcode 天天刷&#xff08;2022.9.2&#xff09;【DFS】 文章目录687 最长同值路径——Leetcode 天天刷&#xff08;2022.9.2&#xff09;【DFS】前言题目描述示例提示信息本地调试运行输入格式输出格式输入样例输出样例层次遍历构造二叉树解法——DFS细…

新店速递丨白玉兰(商务)酒店赣榆吾悦广场店 正式上线

第242家 白玉兰酒店再下连云港 2022年9月&#xff0c;锦江酒店&#xff08;中国区&#xff09;旗下优选服务酒店品牌“白玉兰酒店”连云港再添一员&#xff0c;迎来门店——白玉兰&#xff08;商务&#xff09;酒店赣榆吾悦广场酒店正式上线。这也是全国第242家开业的白玉兰酒…

Git做版本管理及CHANGELOG

规范化的提交信息除了能很好描述项目的修改&#xff0c;还有一个很好的作用就是能根据提交记录来生成CHANGELOG.MD和自动生成版本号等功能。 standard-version 一个用于生成CHANGELOG.md和进行SemVer(语义化版本号)发版的命令行工具 主要功能&#xff1a; 自动修改最新版本…

6-2 多项式求值——15分

本题要求实现一个函数,计算阶数为n,系数为a[0] … a[n]的多项式(上图) 在x点的值。 函数接口定义: double f( int n, double a[], double x );其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。 裁判测试程序样例: #include <stdio.h>#def…

Docker - 容器的网络模式

目录 一、bridge模式 查看容器的有哪几种网络类型 二、host模式 三、none模式 四、container模式 五、overlay模式 创建一个桥接类型的网卡 使用刚才创建的网卡来创建容器 查看刚才使用网卡创建的容器的ip地址 我们指定网卡创建的容器IP地址是 &#xff1a;172.18.0.…

计算机网络——网络协议

目录 网络协议 网络协议的三要素 协议的分层模型 计算机网络层次结构的好处 计算机网络的体系结构 OSI与TCP/IP的体系结构的比较 网络协议 1、计算机网络中的数据交换必须遵守事先约定好的规则。 2、这些规则明确规定了所交换的数据的格式和时序&#xff0c;以及在发送或…

SpringBoot 整合 RabbitMQ 实现消息回调、手动确认 (二) 有图 有源码

创建时间 2022年8月29日 标签&#xff1a;Java、SpringBoot、RabbitMQ、队列 注释&#xff1a;新建SpringBoot项目实操RabbitMQ实现消息回调、手动确认 来源&#xff1a;CSDN博主&#xff1a;小目标青年 文章目录SpringBoot 整合 RabbitMQ 回调确认模式生产者推送消息回调1、消…

3天精通Postman---动态参数amp;断言amp;CSV数据驱动amp;Mock Server

DAY2课题&#xff1a;Postman接口关联&动态参数&断言&CSV数据驱动目录 一、接口关联&#xff0c;接口依赖&#xff0c;多接口串联&#xff0c;组合API 二、Postman的动态参数&#xff08;随机数&#xff09; 三、Postman的环境变量和全局变量 四、Postman断言 五、…

极端气候肆虐催化,碳中和带出了一个“再生时代”

江南一带的高温结束了&#xff0c;今年这场轰轰烈烈的高温&#xff0c;也画上了最后的句号。各地骤降的温度让人仿佛忘却了“热到爆表”的经历&#xff0c;但过去已经成为历史&#xff0c;历史充满痕迹。 格陵兰岛冰盖加速融化、欧洲莱茵河部分河段干涸、长江流域汛期反枯、重…

Cyclopropene-PEG-MAL Maleimide|环丙烯-聚乙二醇-马来酰亚胺

描述&#xff1a;环丙烯有机化合物。环丙烯是由三个碳原子构成的环烯烃&#xff0c;分子式为C3H4 &#xff0c;由于具有张力&#xff0c;环丙烯具有一些和其他环烯烃不同的性质。 理化性质 环丙烯在常温常压下为无色气体&#xff0c;沸点-36.15 &#xff0c;折射率1.489 。 环…

Git的安装与使用

1、Git的下载 2、git的安装 点击安装软件&#xff0c;一路安装到底&#xff0c;无需做任何选择 ...... 此处省略中间安装步骤 ...... 3、检验是否安装成功 在桌面右键&#xff0c;如果出现此图&#xff0c;表示安装成功 4、配置git 为了方便git客户端操作远程仓储方便&#…

Redis集群搭建(单机集群)

Redis入门篇https://blog.csdn.net/tongxin_tongmeng/article/details/126620333集群配置文件&#xff08;单机集群&#xff09; 1.复制/home/redis/redis-7.0.4/redis.conf到/home/redis/workspace/cluster_one cp /home/redis/redis-7.0.4/redis.conf /home/redis/workspace/…

私有化部署的知识管理平台对企业有什么意义?

随着企业的发展扩大&#xff0c;企业内部沉淀的知识也越来越多。过去很多企业都会将知识存储到云上&#xff0c;云部署模式虽然给企业带来了极大的便利&#xff0c;但在一些性能及数据安全上会存在一定的弊端&#xff0c;隐藏不少的企业会选择将数据存储在本地。下面我们就从企…

数字机器人如何更好的助力智慧政务?这里或许有你想要的答案

“十四五”规划和2035年远景目标纲要中明确提出&#xff0c;迎接数字时代&#xff0c;加快建设数字经济、数字社会、数字政府&#xff0c;以数字化转型整体驱动生产方式、生活方式和治理方式变革。 国务院于6月23日印发的《关于加强数字政府建设的指导意见》&#xff0c; 再一…

22年国家gongwuyuan考试申论题(副省级)

2022年国家公务员考试申论题&#xff08;副省级&#xff09;的问题一&#xff0c;它的题目是&#xff1a;根据“给定资料1”&#xff0c;请你谈谈B公司的案例为企业科技创新提供了哪些启示&#xff1b;要求&#xff1a;分析全面&#xff0c;条理清晰&#xff0c;不超过200字。 …

一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官(Spring Boot知识点+详解)

随着 Spring Boot 使用越来越广泛&#xff0c;Spring Boot 已经成为 Java 程序员面试的知识点&#xff0c;很多同学对 Spring Boot 理解不是那么深刻&#xff0c;经常就会被几个连环追问就给干趴下了&#xff01; 给大家整理了 Spring Boot 的35个常见知识点、21道面试必刷题、…

Docker基础-3.本地镜像发布与容器数据卷

我们在上一章中生成了自己的镜像&#xff1a;myubuntu&#xff0c;这章分别将它发布到阿里云和私有仓库 docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE myubuntu 1.0 938b4fc0baf5 20 minutes ago 179MB一、本地镜像发布到阿里云…

视频融合平台EasyCVR视频广场页脚优化为瀑布流式的实现方式

EasyCVR基于云边端一体化架构&#xff0c;兼容性高、拓展性强&#xff0c;可支持多类型设备、多协议方式接入&#xff0c;将复杂多变的底层资源统一管理起来&#xff0c;实现视频资源的统一汇聚与管理、鉴权分发、服务器集群、智能分析、数据共享、集成与调用等视频能力服务。 …