Maven项目管理工具:Maven聚合(maven项目)

在实际的开发过程中,我们所接触的项目一般都由多个模块组成。在构建项目时,如果每次都按模块一个一个地进行构建会十分得麻烦,Maven的聚合功能很好的解决了这个问题。

聚合

使用Maven聚合功能对项目进行构建时,需要在该项目中额外创建一个的聚合模块,然后通过这个模块构建整个项目的所有模块。聚合模块仅仅是帮助聚合其他模块的工具,其本身并无任何实质内容,因此聚合模块中只有一个POM文件,不像其他的模块一样包含src/main/java、src/test/java等多个目录。

与父模块相似,聚合模块的打包方式(packaging)也是pom,用户可以在其POM中通过modules下的module子元素来添加需要聚合的模块的目录路径。

修改Root模块pom的配置如下。

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.biancheng.www</groupId> <artifactId>Root</artifactId> <version>1.0</version> <!--定义的父类pom.xml 打包类型使pom --> <packaging>pom</packaging> <properties> <!-- 定义一些属性 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <log4j.version>1.2.17</log4j.version> <junit.version>4.9</junit.version> <system.version>1.0</system.version> <mysql.connector.version>5.1.18</mysql.connector.version> <c3p0.version>0.9.1</c3p0.version> </properties> <!--dependencyManagement 标签用于控制子模块的依赖版本等信息 --> <!-- 该标签只用来控制版本,不能将依赖引入 --> <dependencyManagement> <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <!--引用的properties标签中定义的属性 --> <version>${log4j.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <!--引用的properties标签中定义的属性 --> <version>${junit.version}</version> <!-- <scope>test</scope> --> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!--引用的properties标签中定义的属性 --> <version>${mysql.connector.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <!--引用的properties标签中定义的属性 --> <version>${c3p0.version}</version> </dependency> </dependencies> </dependencyManagement> <!--添加需要聚合的模块--> <modules> <module>../App-Core-lib</module> <module>../App-Data-lib</module> <module>../App-UI-WAR</module> </modules></project>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657复制代码类型:[java]

打开命令行窗口,跳转到Root模块所在目录,执行以下Maven命令,对Root进行构建。

mvn clean install1复制代码类型:[java]

命令直接结果如下图。

Maven项目管理工具:Maven聚合(maven项目)

聚合模块在构建时,Maven会先解析聚合模块的POM、分析需要构建的模块,并根据这些模块之间的关系计算出构建顺序,然后根据这个顺序依次构建各个模块。

构建完成后输出的是一个项目构建的小结报告,该报告中包括各个模块构建成功与否、构建花费的时间、以及整个构建构成所花费的时间等信息。

继承和聚合的关系

在实际的项目中,一个模块往往既是聚合模块又是其他项目的父模块,那么Maven的继承和聚合的关系是如何的呢?

Maven的继承和聚合的目的不同,继承的目的是为了消除POM中的重复配置,聚合的目的是为了方便快速的构建项目。

对于继承中的父模块来说,它跟本不知道那些模块继承了它,但子模块都知道自己的父模块是谁。

对于聚合模块来说,它知道哪些模块被聚合了,但那些被聚合的模块根本不知道聚合模块的存在。

两者在结构和形式上还是有一定的共同点的,最直观的就是两者的打包方式都是pom,两者除了POM外都没有实际的代码内容。

开课吧广场-人才学习交流平台

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年8月30日 上午8:48
下一篇 2023年8月30日 上午8:58

相关推荐

  • 项目 技术水平

    项目技术水平项目技术水平项目技术水平1.项目技术专业实力2.项目技术水平3.项目技术专业实力4.项目技术人才5.项目技术水平6.项目技术与应用技术7.项目技术能力1.项目技术与应用…

    科研百科 2024年11月30日
    0
  • 项目合同管理系统模板

    项目合同管理系统模板 项目合同管理系统是项目管理中不可或缺的一部分,可以帮助项目经理和项目团队更好地管理项目合同和进度、成本、风险等。本文将介绍一种常用的项目合同管理系统模板,以便…

    科研百科 2025年6月9日
    1
  • 没有意义的研究课题(没有意义的科研项目有哪些)

    没有意义的科研项目有哪些 近年来,随着科技的不断发展,许多科研项目都变得越来越有趣和有意义。然而,也有一些科研项目似乎失去了它们原有的意义,成为了没有意义的存在。今天,我们将讨论一…

    科研百科 2024年4月5日
    201
  • 科研项目分段排名怎么看

    科研项目分段排名怎么看 随着科技的不断发展,科研项目分段排名已经成为了学术界和产业界共同关注的话题。分段排名可以根据多个因素来评估一个项目的风险、创新性、实用性、经济效益等方面的能…

    科研百科 2025年5月7日
    0
  • 科研项目节点奖

    科研项目节点奖 随着科技的不断发展,科研项目在各个领域都有着广泛的应用。为了激励科学家们不断追求卓越,提高科研项目的质量和效率,我们推出了科研项目节点奖。 科研项目节点奖是一项重要…

    科研百科 2025年2月20日
    0
  • 李健:爱岗敬业筑丰碑

    来源:【濮阳日报】 李健是中原油田石油工程技术研究院博士后技术专家,主要从事非常规油气储层改造技术、油气田化学品研发领域相关研究工作,负责非常规油气储层改造、压裂材料研发优选领域内…

    科研百科 2024年6月23日
    56
  • 科研项目财务台账怎么做

    科研项目财务台账是记录和跟踪科研项目财务情况的重要工具,可以帮助研究人员了解项目的财务情况,及时发现问题并采取措施。以下是一些制作科研项目财务台账的步骤。 1. 确定财务台账的结构…

    科研百科 2025年5月27日
    0
  • 贵州省安顺市下发通知规范党员档案管理(贵州省党员档案管理办法)

    为提高党员档案管理工作科学化、规范化水平,贵州省安顺市于日前印发了《关于进一步规范党员档案管理工作的通知》(以下简称为《通知》),通过从做好党员档案查找清理工作、明确党员档案管理权…

    科研百科 2024年1月15日
    221
  • 系统集成项目管理工程师如何备考(系统集成项目管理工程师怎么备考)

    随着职称入户政策的普及,越来越多的人加入到软考大军。系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信…

    2022年6月20日
    298
  • 微信小程序商城开发-小程序商城平台定制开发方案(微信小程序商城开发实战)

    微信小程序商城开发是现代电商的重要组成部分。大多数消费者已经习惯在手机端进行购物体验,因此新型的微信小程序商城为消费者带来了全新的购物方式。与传统的电商网站相比,微信小程序商城更加…

    科研百科 2023年5月19日
    196