Maven高级操作--分模块设计、聚合、继承和私服

这篇具有很好参考价值的文章主要介绍了Maven高级操作--分模块设计、聚合、继承和私服。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、分模块设计与开发

1.1 分模块设计

  • 问题:当项目做大做强的时候,前面的基础Spring开发的框架都无法满足java大型项目的维护和复用,而且团队合作也会造成较大的困难。
  • 所以就需要分模块设计:将项目按照功能拆分成若干个子模块,方便项目的管理维护扩展,也方便模块间的相互调用资源共享

分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。

  • 大概步骤:
  1. 创建一个新的maven项目,并填写需要分出去的模块名。
  2. 在原项目下将模块的包,如utils包下的类,放到目标maven项目下,目录名字保持一致main\java\com\mannor\utlis
  3. 将需要的依赖项导入到新maven中。
  4. 将新maven导入到原来的项目pom.xml文件中,即可食用。

二、继承与聚合

2.1 继承

  • 概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程*可以继承父工程中的配置信息,常见于依赖关系的继承**。
  • 作用:简化依赖配置、统一管理依赖
  • 实现:<parent> ... </parent>

2.1.1 继承关系的实现

  1. 创建maven模块tlias-parent,该工程为父工程,设置打包方式**pom**(默认jar)。
    <!-- 只截取了关键部分代码 -->
	<!-- 设置父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.mannor</groupId>
    <artifactId>tlias-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging> <!-- 设置打包方式 -->

</project>

  1. 子工程pom.xml文件中,配置继承关系。
    <!-- 只截取了关键部分代码 -->
  <parent>
        <groupId>com.mannor</groupId>
        <artifactId>tlias-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../tlias-parent/pom.xml</relativePath> <!-- 父工程的pom文件的相对路径 -->
    </parent>

    <artifactId>tlias-web-management</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>tlias-web-management</name>
    <description>tlias-web-management</description>
  1. 父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)。
  • 代码展示略。
2.1.1.1 继承关系图

Maven高级操作--分模块设计、聚合、继承和私服

2.1.1.2 重点
  1. 在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的。
  2. relativePath指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程)。
  3. 若父子工程都配置了同一个依赖的不同版本,以子工程的为准。

常见的打包方式:
jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
war:普通web程序打包,需要部署在外部的tomcat服务器中运行
pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理

2.1.2 版本锁定

2.1.2.1 版本管理
  • 在maven中,可以在父工程的pom文件中通过<dependencyManagement>来统一管理依赖版本。
  • 子工程引入依赖时,无需指定<version>版本号,父工程统一管理。变更依赖版本,只需在父工程中统一变更。
  1. 在父工程中:
 <!--  统一管理依赖版本:只是版本的管理,不会有直接依赖 -->
    <dependencyManagement>
        <dependencies>

            <!--  jwt令牌-->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.9.1</version>
            </dependency>
			
        </dependencies>
    </dependencyManagement>
  1. 在子工程中直接引用即可,无需指定版本号:
    <dependencies> 

        <!--  jwt令牌-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
        </dependency>

    </dependencies>

2.1.2.2 自定义属性/引用属性
  • 在大型开发中,会有许多依赖需要引用,所以有自定义属性来直接管理版本信息,更方便后期的维护。
  1. 自定义属性:
    <properties>
        <lombok.version>1.18.24</lombok.version>
    </properties>
  1. 引用属性
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
    </dependencies>

思考?<dependencyManagement><dependencies>的区别是什么?
1.<dependencies>是直接依赖,在父工程配置了依赖,子工程会直接继承下来。
2.<dependencyManagement>`是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

2.2 聚合

  • 当项目开发完毕时,要对目标工程执行打包的操作。目标工程会在本地的maven仓库中去寻找对应依赖的jar包,不然就不会构建成功。
  • 要想将jar包放到maven的本地仓库就要按照顺序执行对应maven项目或者模块的install操作,这样才会打包成功。

当然这种方式的缺点也很明显,就是当项目模块的数量很多的时候就不便于操作了。所以就需要maven的聚合。

2.2.1 概念

2.2.1.1 聚合:
  • 将多个模块组织成一个整体,同时进行项目的构建。
2.2.1.2 聚合工程
  • 一个不具有业务功能的“空”工程(有且仅有一个pom文件)---->parent父工程就刚好可以充当这样得到角色。
2.2.1.3. 作用
  • 快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)

2.2.2 操作实现

  • maven中可以通过<modules>设置当前聚合工程所包含的子模块名称

聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

  • 源码实现,在父工程的pom.xml文件下:
    <!--  聚合其他模块  -->
    <modules>
        <module>../tlias-pojo</module>   <!-- 在里面填写需要聚合模块的相对路径 -->
        <module>../tlias-utlis</module>
        <module>../tlias-web-management</module>
    </modules>
  • 最后操作:执行父工程的install或clean等指令和程序。

2.3 继承与聚合的区别

2.3.1 作用

  • 聚合用于快速构建项目
  • 继承用于简化依赖配置、统一管理依赖

2.3.2 相同点:

  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中聚合与继承均属于设计型模块,并无实际的模块内容

2.3.3 不同点:

  • 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

三、maven的私服

1.介绍

  • 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。
  • 依赖查找顺序:–>本地仓库–>私服–>中央仓库

私服在企业项目开发中,一个项目/公司,只需要一台即可(无需我们自己搭建,会使用即可)。

2.资源的上传和下载

Maven高级操作--分模块设计、聚合、继承和私服

  • 项目版本:
    • RELEASE(发行版本)︰功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
    • SNAPSHOT(快照版本)︰功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库

3.具体操作

  1. 设置私服的访问用户名/密码(settings.xml中的servers中配置)。
  2. IDEA的maven工程的pom文件中配置上传(发布)地址。
  3. 设置私服依赖下载的仓库组地址(settings.xml中的mirrors、profiles中配置。

因为私服的信息配置都是固定的步骤,所以我将私服的配置操作在此省略,单独写成md文件,需要的可以私我发你。文章来源地址https://www.toymoban.com/news/detail-511742.html

到了这里,关于Maven高级操作--分模块设计、聚合、继承和私服的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Maven高级(四)--私服

    我们所拆分的模块是可以在同一个公司各个项目组之间的项目组之间进行资源共享的,这就需要Maven的私服来实现。 两个项目组之间如何基于私服进行资源的共享的呢? 例如A开发了一个模块tlias-utils,B团队进行项目开发,要想使用tlias-utils中提供的工具类,怎么办呢?在pom.

    2024年02月13日
    浏览(49)
  • Maven高级5-私服

    一台独立的服务器,用于解决团队内部的资源共享与资源同步问题(模拟了中央服务器); https://help.sonatype.com/repomanager3/download 命令行启动服务器 在nexus.exe目录(bin目录)下启动cmd,输入nexus.exe /run nexus 在浏览器中访问服务器 http://localhost:8081 登录注册 账号admin,密码在它给

    2024年02月07日
    浏览(40)
  • Maven(六):Maven的使用——继承与聚合

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! Maven 工程之间, A 工程继承 B 工程 B 工程:父工程 A 工程:子工程 本质上是 A 工程的 pom.xml 中的配

    2024年02月06日
    浏览(38)
  • Maven进阶系列-继承和聚合

    Maven工程之间存在继承关系,例如工程B继承工程A,工程C也继承了工程A ProjectA的pom.xml ProjectB的pom.xml ProjectC的pom.xml 本质上是ProjectB和ProjectC的 pom.xml 中的配置 继承了ProjectA中 pom.xml 的配置。 这里提到了 超级pom.xml ,对于我们创建的一个maven工程,即便我们自己的pom.xm文件中没

    2024年02月07日
    浏览(41)
  • Maven工程继承和聚合关系

    Maven 继承是指在 Maven 的项目中,让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息,简化项目的管理和维护工作。 在父工程中统一管理项目中的依赖信息。 它的背景是: 对一个比较大型的项目进行了模块拆分。 一个 project 下

    2024年01月23日
    浏览(43)
  • Maven 依赖传递和冲突、继承和聚合

    1.1.1 概念         假如有三个 Maven 项目 A 、 B 和 C ,其中项目 A  依赖 B ,项目 B  依赖 C 。那么我们可以说 A 依赖 C 。也就是说,依赖的关系为: A—B—C , 那么我们执行项目 A 时,会自动把 B 和 C 都下载导入到 A 项目的 jar 包文件夹中,这就是依赖的传递性。 1.1.2 作

    2024年01月21日
    浏览(47)
  • Maven工程开发中的继承与聚合

    设置一个空的maven工程,工程里面只有pom文件,另外将这个工程的打包方式设置为pom。 在聚合工程里面添加聚合工程里面管理的模块 例如下面02工程继承上面的01工程,在02工程的pom文件中要配置要继承的父工程的依赖,并添加上相对路径。 此时,2、3、4中所用公共依赖的模

    2024年02月16日
    浏览(43)
  • Maven 聚合和继承 Inheritance vs Aggregation

    A Project Object Model or POM is the fundamental unit of work in Maven. It is an XML file that contains information about the project and configuration details used by Maven to build the project. It contains default values for most projects. Examples for this is the build directory, which is  target ; the source directory, which is  src/main/java ; the tes

    2024年02月09日
    浏览(48)
  • Maven工程 — 继承与聚合 相关知识点详解

     简介:这篇帖子主要讲解Maven工程中的继承与聚合的相关知识点,用简洁的语言和小编自己的理解,深入浅出的说明Maven工程的继承与聚合。 目录 1、继承 1.1 继承关系的实现 1.2 版本锁定 2、聚合 2.1 聚合方法 3、总结 3.1 作用与联系 4、私服 4.1 私服介绍 4.2 资源上传与下载

    2024年01月25日
    浏览(42)
  • 【Maven】依赖、构建管理 继承与聚合 快速学习(3.6.3 )

    Maven 文档 Maven 是一款为 Java 项目构建管理、依赖管理的工具( 软件 ),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。 依赖管理工具 maven下载版本 使用:apache-maven-3.6.3 软件结构: 环境变量 命令行显示版本 mvn -v 设置: maven/conf/settings.x

    2024年02月21日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包