热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Maven依赖聚合与继承

1、maven编写pom1.1、pom核心元素project:是所有pom.xml元

1、maven编写pom

1.1、pom核心元素

  • project:是所有pom.xml元素的根元素。可以声明一些命名空间以及xsd,使用这些xsd可以让第三方工具快速编辑pom
  • modeVersion:根元素的一个子元素,指定当前pom模型版本
  • groupId:定义属于哪个包
  • artifactId:当前maven文件的唯一id
  • version:当前项目的版本
  • name:非必填,指定项目名称
  • dependencies:可以包含多个dependency,声明依赖的坐标
  • dependency:添加坐标依赖
  • scope:依赖的范围

groupId、artfactId、version是定义项目的基本坐标

1.2、pom文件预览

img

2、maven依赖详解

2.1、配置依赖









依赖类型
依赖范围
可选依赖

排除依赖








其中

  1. type:为依赖的类型,默认为jar,对应项目坐标定义的packageing
  2. scope:依赖范围,依赖范围就是控制与三种classpath(编译、测试、运行)的关系,包含值有
    1. compile:编译范围依赖,默认为该依赖范围,对编译、测试、运行三种classpath都有效。如:log4j
    2. provided:已提供依赖范围,对编译和测试有效,运行无效。如:servlet-api
    3. runtime:运行依赖范围,对测试运行有效,编译无效。如:jdbc驱动
    4. test:测试依赖范围,对编译和测试有效,运行时无效。如:junit
    5. import:导入依赖范围,不会对三种classpath造成影响
    6. system:系统依赖范围,和provided一样,但是和系统环境有关,慎用
  3. optional:是否关闭传递依赖,false默认是传递依赖,true是屏蔽传递依赖
  4. exclusions:指定需要排除的依赖(只需要指定groupId和artfactId)

传递依赖

img

可选依赖

img

原则为:路径最近优先;第一声明优先

2.2、归类依赖

如果统一个项目中的不同模块如hadoop-common、hadoop-hdfs等等,他们的依赖版本都是相同的,就可以使用归类依赖。这样依赖版本就可以进行统一升级




${scala.suffix.version}.8



org.scala-lang
scala-library
${scala.version}


org.scala-lang
scala-compiler
${scala.version}



3、maven聚合和继承

3.1、继承

为了解决多个模块(pom.xml)有很多相同的配置,可以以使用pom的继承。需要创建pom的父子结构,在父pom中声明一些配置供子pom继承,以实现"一处声明,多出使用"的目的

img

父模块中pom包含的信息

  1. 统一属性的定义
  2. 构建及插件的版本管理
  3. 发布管理设置
  4. 团队信息等

子模块使用parent元素声明父模块,parent夏子元素中groupId、artfactId和version指定父模块
坐标,必填

父模块常用元素

  1. :定义变量信息,子模块可以使用
  2. :将项目中需要用到的构件统一在此进行管理,包括构件包、构件名及版本,
    而子模块引用即可,统一构件的版本管理,方便维护
  3. :同上用法,主要针对maven插件
  4. :发布管理,所有子模块复用

作为父模块pom的打包类型必须为pom

3.2、聚合

为了能够使用一跳命令就能够构件多个模块,可以建立额外的模块,通过该模块构件多个模块,而该模块
也有pom

img

聚合:将多个模块聚合在一起,这里需要显示定义的pom,并用modules配置多个已有模块来表示聚合
,聚合模块无需 src/main/java 目录

使用:一般情况下,为了方便用户构件项目,通常将聚合模块放在项目目录的最高层,其它模块则作为
聚合模块的子目录存在



4.0.0
com.liumm
Hadoop-Learning
pom
1.0-SNAPSHOT

Hdfs
MapReduce
Hbase
Hive
ElasticSearch


经典模块结构

img


推荐阅读
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 本文详细探讨了OpenCV中人脸检测算法的实现原理与代码结构。通过分析核心函数和关键步骤,揭示了OpenCV如何高效地进行人脸检测。文章不仅提供了代码示例,还深入解释了算法背后的数学模型和优化技巧,为开发者提供了全面的理解和实用的参考。 ... [详细]
author-avatar
兴添刚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有