Maven | 高级(上)

简介: Maven | 高级(上)

9caa43be77654309bb6fff300e8d368b.png

一、分模块开发


1.1 分模块开发的意义


将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。

ef8b423139514faf9d85fa01e10a78c5.png

1.2 分模块开发与设计


分模块开发代码设计步骤如下,目的是将bean层和mapper层从原模块中分离出来,变成两个新的模块。

(1)新建2个mav

en模块

107dd2f56d3a4aa8874a4716a975febd.png

(2)书写模块代码

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

这里的模块代码主要是Book实体类和BookMapper接口,如上图。

(3)通过maven-install指令将模块安装到本地


dee3a173f0254fc99ad4c2dd0ef9ce8b.png

(4)在模块中引入分模块


<!--    引入模块1-->
        <dependency>
            <groupId>org.itxiaoguo</groupId>
            <artifactId>maven_1</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--        引入模块2-->
        <dependency>
            <groupId>org.itxiaoguo</groupId>
            <artifactId>maven_2</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>


至此,多模块协同开发搭建完毕。


二、依赖管理


2.1 依赖传递


(1)依赖具有传递性,比如A依赖B,B依赖C,那么A依赖C,B称为直接依赖,C称为间接依赖。依赖优先级:

1685978627015.png


eecb5c055255432e864cb4463b52f49f.png


2.2 可选依赖和排除依赖


可选依赖 排除依赖
在当前模块可用,不能向下传递。如自己写的依赖提供给别人使用时 有但不需要使用该依赖时,排除依赖,不需要写版本号。如当发现一个jar包的东西不好用时可以排除


        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
<!--            设置当前依赖为可选依赖,只在当前模块可用,不能向下传递-->
            <optional>true</optional>
        </dependency>


    <dependency>
            <groupId>org.itxiaoguo</groupId>
            <artifactId>maven_1</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
<!--                    有但不需要使用该依赖时,排除依赖,不需要写版本号,-->
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

三、继承与聚合


3.1 聚合


聚合是指用将多个模块组织成一个整体,从而达到同时进行项目构建,这个管理工程称为聚合工程,下面介绍如何进行聚合工程开发。


6578111f099c4878a1435d30793dc6ee.png

<!--    1.设置聚合工程的打包方式为pom-->
    <packaging>pom</packaging>
<!--    2.添加要管理的maven工程-->
    <modules>
        <module>../SSM_1</module>
        <module>../maven_2</module>
        <module>../maven_1</module>
<!--        注意事项:编译顺序与模块书写无关,与模块之间的依赖关系有关-->
    </modules>


当交换module书写顺序后,再次编译:

e5ce0ccc93f548fa813e9c0b06bf11b2.png


3.2 继承(依赖继承)

子工程可以继承父工程(通常是聚合工程)的配置信息,最常见的是依赖关系继承。作用是简化开发,减少依赖版本冲突。


<!--    聚合工程-->
<!--    1.要继承的依赖-->
    <dependencies>
        <!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!--        mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.24</version>
        </dependency>
    </dependencies>
    <!--    2. 可选继承依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


<!--    子工程-->
<!--    声明继承关系-->
    <parent>
        <groupId>org.itxiaoguo</groupId>
        <artifactId>maven_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../maven_parent/pom.xml</relativePath>
    </parent>

21271b8f24e54d91af78ef933e151c0e.png


类型 聚合 继承
作用 快速构建项目 快速配置项目
相同 pom文件打包方式为pom 属于设计型模块,无实际功能

不同在当前模块配置聚合关系,模块可以感知到子模块在子模块中继承,父工程无法知道哪些工程继承了自己

相关文章
|
7月前
|
Java Maven Spring
Maven高级-属性配置使用、资源文件引用属性及版本管理
Maven高级-属性配置使用、资源文件引用属性及版本管理
165 0
|
7月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
74 0
|
7月前
|
Java Maven
Maven高级-分模块开发和设计及依赖管理
Maven高级-分模块开发和设计及依赖管理
83 0
|
7月前
|
存储 Oracle Java
Maven高级-私服简介与安装及私服仓库分类
Maven高级-私服简介与安装及私服仓库分类
131 0
|
7月前
|
Java 关系型数据库 MySQL
Maven高级
Maven高级
49 0
|
7月前
|
Java Maven 开发者
Maven高级-聚合与继承 私服(图文并茂)
Maven高级-聚合与继承 私服(图文并茂)
71 0
|
7月前
|
Java Maven 数据安全/隐私保护
Maven高级-本地仓库访问私服配置及私服资源上传与下载
Maven高级-本地仓库访问私服配置及私服资源上传与下载
1213 0
|
7月前
|
Java 测试技术 Maven
Maven高级-多环境配置与应用及跳过测试方式
Maven高级-多环境配置与应用及跳过测试方式
93 0
|
7月前
|
Java Maven
Maven高级-聚合及实施步骤
Maven高级-聚合及实施步骤
70 0
|
存储 Java 程序员
【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!
依赖范围传递性 带有依赖范围的资源在进行传递时,作用范围将受到影响
92 0

推荐镜像

更多