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

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

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

 

 

 

 

相关文章:

  • SQL 3小时快速入门 学习b站的笔记
  • jQuery表单属性过滤器:过滤<input>标签、<select>标签
  • unity官方教程 -- Hi Shader学习笔记 Chapter 1
  • 什么是优化
  • 基于Springboot+vue的论坛管理系统 elementui
  • 大量if else的优化方案
  • 牛客 NC24755 [USACO 2010 Dec S]Apple Delivery
  • Git做版本管理及CHANGELOG
  • python经典编程100例(1)
  • GO语言 | go work 神一般的管理 多个module没烦恼
  • 【C语言】指针数组
  • 基于51单片机数字电压表仿真设计_数码管显示
  • 种草模式崛起!小红书KOL达人种草成推广热门方向!
  • Git Commit规范指北
  • 易观之星 | “2022年度用户推荐数字应用”投票通道开启
  • centos安装java运行环境jdk+tomcat
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ES10 特性的完整指南
  • gulp 教程
  • iOS | NSProxy
  • JavaScript异步流程控制的前世今生
  • node 版本过低
  • NSTimer学习笔记
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 大型网站性能监测、分析与优化常见问题QA
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 前端相关框架总和
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • mysql面试题分组并合并列
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • # Panda3d 碰撞检测系统介绍
  • #Ubuntu(修改root信息)
  • (03)光刻——半导体电路的绘制
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C++17) std算法之执行策略 execution
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (编译到47%失败)to be deleted
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (转)关于pipe()的详细解析
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .dwp和.webpart的区别
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net mvc总结
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net网站发布-允许更新此预编译站点
  • .NET运行机制
  • .NET中使用Redis (二)
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Autowired多个相同类型bean装配问题
  • @RequestBody详解:用于获取请求体中的Json格式参数