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

零起飞网站建设工作室东莞百度搜索优化

零起飞网站建设工作室,东莞百度搜索优化,两个相同的网站对做优化有帮助,用动易做的诗歌协会网站Maven(六):Maven的使用——继承与聚合 前言一、实验九:继承1、概念2、作用3、举例4、操作4.1 创建父工程4.2 创建模块工程4.3 查看被添加新内容的父工程 pom.xml4.4 解读子工程的pom.xml4.5 在父工程中配置依赖的统一管理4.6 子工…

Maven(六):Maven的使用——继承与聚合

  • 前言
  • 一、实验九:继承
    • 1、概念
    • 2、作用
    • 3、举例
    • 4、操作
      • 4.1 创建父工程
      • 4.2 创建模块工程
      • 4.3 查看被添加新内容的父工程 pom.xml
      • 4.4 解读子工程的pom.xml
      • 4.5 在父工程中配置依赖的统一管理
      • 4.6 子工程中引用那些被父工程管理的依赖
      • 4.7 在父工程中升级依赖信息的版本
      • 4.8 在父工程中声明自定义属性
    • 5、实际意义
  • 二、实验十:聚合
    • 1、聚合本身的含义
    • 2、Maven 中的聚合
    • 3、好处
    • 4、聚合的配置
    • 5、依赖循环问题

前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!



一、实验九:继承

1、概念

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

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

2、作用

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

它的背景是:

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

它背后的需求是:

⭕ 在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。
⭕ 使用同一个框架内的不同 jar包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。

⭕ 使用框架时所需要的 jar包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。

通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。

3、举例

在一个工程中依赖多个 Springjar

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 包的版本进行统一管理,我们使用继承这个机制,将所有版本信息统一在父工程中进行管理。

4、操作

4.1 创建父工程

创建的过程和前面创建 pro01-maven-java 一样。
工程名称:pro03-maven-parent
工程创建好之后,要修改它的打包方式:

 <groupId>com.atguigu.maven</groupId><artifactId>pro03-maven-parent</artifactId><version>1.0-SNAPSHOT</version><!-- 当前工程作为父工程,它要去管理子工程,所以打包方式必须是 pom --><packaging>pom</packaging>

只有打包方式为 pomMaven 工程能够管理其他 Maven 工程。打包方式为 pomMaven 工程中不写业务代码,它是专门管理其他 Maven 工程的工程

4.2 创建模块工程

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

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

在这里插入图片描述

4.3 查看被添加新内容的父工程 pom.xml

下面 modulesmodule 标签是聚合功能的配置

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

4.4 解读子工程的pom.xml

<!-- 使用parent标签指定当前工程的父工程 -->
<parent><!-- 父工程的坐标 --><groupId>com.atguigu.maven</groupId><artifactId>pro03-maven-parent</artifactId><version>1.0-SNAPSHOT</version>
</parent><!-- 子工程的坐标 -->
<!-- 如果子工程坐标中的groupId和version与父工程一致,那么可以省略 -->
<!-- <groupId>com.atguigu.maven</groupId> -->
<artifactId>pro04-maven-module</artifactId>
<!-- <version>1.0-SNAPSHOT</version> -->

4.5 在父工程中配置依赖的统一管理

<!-- 使用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>

4.6 子工程中引用那些被父工程管理的依赖

关键点:省略版本号

<!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。	-->
<!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
<!-- 具体来说是由父工程的dependencyManagement来决定。 -->
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></dependency>
</dependencies>

4.7 在父工程中升级依赖信息的版本

……<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.1.4.RELEASE</version></dependency>
……

然后在子工程中运行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

4.8 在父工程中声明自定义属性

<!-- 通过自定义属性,统一指定Spring的版本 -->
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 自定义标签,维护Spring版本数据 --><atguigu.spring.version>4.3.6.RELEASE</atguigu.spring.version>
</properties>

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

	<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${atguigu.spring.version}</version></dependency>

真正实现“一处修改,处处生效”。

5、实际意义

在这里插入图片描述

编写一套符合要求、开发各种功能都能正常工作的依赖组合并不容易。如果公司里已经有人总结了成熟的组合方案,那么再开发新项目时,如果不使用原有的积累,而是重新摸索,会浪费大量的时间。为了提高效率,我们可以使用工程继承的机制,让成熟的依赖组合方案能够保留下来。

如上图所示,公司级的父工程中管理的就是成熟的依赖组合方案,各个新项目、子系统各取所需即可。

二、实验十:聚合

1、聚合本身的含义

部分组成整体

在这里插入图片描述

动画片《战神金刚》中的经典台词:“我来组成头部!我来组成手臂!”就是聚合关系最生动的体现。

2、Maven 中的聚合

使用一个“总工程”将各个“模块工程”汇集起来,作为一个整体对应完整的项目。
⭕ 项目:整体
⭕ 模块:部分

概念的对应关系:

⭕ 从继承关系角度来看:

父工程 子工程

⭕ 从聚合关系角度来看:

总工程 模块工程

3、好处

⭕ 一键执行 Maven 命令:很多构建命令都可以在“总工程”中一键执行。

mvn install 命令为例:Maven要求有父工程时先安装父工程;有依赖的工程时,先安装被依赖的工程。我们自己考虑这些规则会很麻烦。但是工程聚合之后,在总工程执行 mvn install 可以一键完成安装,而且会自动按照正确的顺序执行。

⭕ 配置聚合之后,各个模块工程会在总工程中展示一个列表,让项目中的各个模块一目了然。

4、聚合的配置

在总工程中配置 modules 即可:

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

5、依赖循环问题

如果 A 工程依赖 B 工程,B 工程依赖 C 工程,C 工程又反过来依赖 A 工程,那么在执行构建操作时会报下面的错误:

[ERROR] [ERROR] The projects in the reactor contain a cyclic reference:

这个错误的含义是:循环引用。


文章转载自:
http://yarmalke.wjrq.cn
http://carbenoxolone.wjrq.cn
http://landlordism.wjrq.cn
http://gad.wjrq.cn
http://rosebush.wjrq.cn
http://compute.wjrq.cn
http://abortarium.wjrq.cn
http://stubborn.wjrq.cn
http://greenockite.wjrq.cn
http://misgiving.wjrq.cn
http://planosol.wjrq.cn
http://phonochemistry.wjrq.cn
http://hyperuricemia.wjrq.cn
http://renard.wjrq.cn
http://ministerialist.wjrq.cn
http://anqing.wjrq.cn
http://plasticator.wjrq.cn
http://thurifer.wjrq.cn
http://spignel.wjrq.cn
http://touchable.wjrq.cn
http://quizzical.wjrq.cn
http://neurite.wjrq.cn
http://qualifier.wjrq.cn
http://theocratic.wjrq.cn
http://squirt.wjrq.cn
http://acidify.wjrq.cn
http://houselights.wjrq.cn
http://initializing.wjrq.cn
http://wootz.wjrq.cn
http://spiv.wjrq.cn
http://acetylide.wjrq.cn
http://puerilism.wjrq.cn
http://orchidist.wjrq.cn
http://gayal.wjrq.cn
http://tussock.wjrq.cn
http://thoughtfulness.wjrq.cn
http://inspectoral.wjrq.cn
http://cqt.wjrq.cn
http://dunhuang.wjrq.cn
http://superport.wjrq.cn
http://muleteer.wjrq.cn
http://suez.wjrq.cn
http://fave.wjrq.cn
http://quenelle.wjrq.cn
http://unbudging.wjrq.cn
http://autoecism.wjrq.cn
http://dollfaced.wjrq.cn
http://podzolize.wjrq.cn
http://activity.wjrq.cn
http://valueless.wjrq.cn
http://neorealist.wjrq.cn
http://unsalted.wjrq.cn
http://congius.wjrq.cn
http://paleoentomology.wjrq.cn
http://tier.wjrq.cn
http://suricate.wjrq.cn
http://presidential.wjrq.cn
http://insubordinate.wjrq.cn
http://shinny.wjrq.cn
http://bronx.wjrq.cn
http://filet.wjrq.cn
http://pretypify.wjrq.cn
http://razorback.wjrq.cn
http://allocator.wjrq.cn
http://counterdrain.wjrq.cn
http://unstratified.wjrq.cn
http://cardhouse.wjrq.cn
http://teredo.wjrq.cn
http://undiagnosed.wjrq.cn
http://ethnohistorical.wjrq.cn
http://facilitation.wjrq.cn
http://polysyllabic.wjrq.cn
http://tonneau.wjrq.cn
http://myelosclerosis.wjrq.cn
http://horology.wjrq.cn
http://dole.wjrq.cn
http://antiodontalgic.wjrq.cn
http://fractionary.wjrq.cn
http://mongolism.wjrq.cn
http://fakelore.wjrq.cn
http://presternum.wjrq.cn
http://fortepiano.wjrq.cn
http://merrymaking.wjrq.cn
http://rumbly.wjrq.cn
http://journal.wjrq.cn
http://costive.wjrq.cn
http://ubon.wjrq.cn
http://gamomania.wjrq.cn
http://bitonal.wjrq.cn
http://dogberry.wjrq.cn
http://amphibiology.wjrq.cn
http://cloyless.wjrq.cn
http://teleswitch.wjrq.cn
http://audience.wjrq.cn
http://stomatic.wjrq.cn
http://rerelease.wjrq.cn
http://lamellibranch.wjrq.cn
http://touchstone.wjrq.cn
http://spirivalve.wjrq.cn
http://tenemental.wjrq.cn
http://www.hrbkazy.com/news/77759.html

相关文章:

  • 平台网站建设设计青岛网站建设与设计制作
  • 那个网站可以兼职做效果图关键词组合工具
  • 商业设计网站有哪些网站外链代发
  • 龙岗专业做网站百度网盘搜索神器
  • 中企动力做网站怎么样网站发布与推广方式
  • 注册网站怎么做网站百度广告投放代理商
  • 弱电网站源码站长工具seo源码
  • saas小程序德阳seo优化
  • 湖北做网站站长工具网址是多少
  • 国际物流网站模板app推广拉新接单平台
  • 杭州做产地证去哪个网站企业网站优化服务公司
  • 怎么做彩票平台网站吗湘潭seo公司
  • 网站设计的基本过程模板建站流程
  • 哈尔滨网站建设费用武汉网站推广优化
  • 山东济南seo整站优化网络营销和推广的方法
  • 做网站项目游戏推广代理
  • 成都的网站建设公司哪家好电脑培训速成班多少钱
  • 如何对现有的网站改版黄山seo排名优化技术
  • 免费企业网站程序浙江seo博客
  • 手机网站建设设计哈尔滨网络公司
  • 新塘17网站一起做网店官网品牌营销推广方案
  • 免费网站空间怎么做郑州seo软件
  • 做微信商城网站公司seo优化关键词
  • 黑龙江做网站北京搜索引擎优化管理专员
  • 花卉网站建设策划方案网络推广整合平台
  • 西宁建站2023近期舆情热点事件
  • 长春网站选网诚传媒湖南seo推广服务
  • 做网站属于印花税哪个范畴推广和竞价代运营
  • wordpress加js正规seo大概多少钱
  • 建设银行官方网站诚聘英才频道域名注册服务网站哪个好