• Maven 管理多模块应用


    Maven 管理多模块应用的实现是互联网项目中多使用分布式开发,那么每个独立的服
    务都会使用独立的项目进行维护,那么这样就需要使用多模块应用管理,来实现项目的高度
    统一。
    1.创建 Project Empty Project
    点击“ Next ”下一步

    2.设置项目名称和项目存放位置

    为新创建的项目设置项目名称和项目位置,然后点击“ Finish
    Project name :项目名称
    Project location :项目存放位置
    3.文件夹不存在提示框
    提示内容如下:
    项目目录“ E:\ 项目 \32 Maven 模块项目”不存在。它将由 IntellijIDEA 创建。
    点击“ OK”

    4.项目结构

    选择“ Cencel ”取消

    Maven 空项目创建成功,如下图

     

    5.创建 Maven 父工程

    创建一个 Model 工程

    选择 Maven 工程

     

    设置 Module GAV 坐标

     

    GroupId :公司域名的倒序
    ArtifactId :项目或模块名称
    Version :项目或模块版本号
    模块内容存放位置

    配置导入设置

    Maven 项目被修改后,需要“手动更新”或“自动更新”,通常选择“Enable Auto-Import

     

    设置父工程的 pom 文件

    父工程的 packaging 标签的文本内容必须设置为 pom

     

    删除 src 目录

     

    6.创建子模块

     创建 module 工程

    创建 maven java 工程

     

    设置 module 项目基础信息

     

    Add as module to :选择将创建的模块添加哪个模块
    Parent :选择模块的父工程
    GroupId :选择父工程后,默认继承父工程的 GroupId
    ArtifactId :模块的项目名称
    Version :选择父工程后,默认继承父工程的 Version
    设置模块存放位置

    项目视图 

    子模块项目的 pom 文件 

    parent 标签:指向父工程
    relativePath 标签:相对路径
    7.设置父工程编译级别
    执行效果:
    项目中会统一使用 JDK 版本和编译级别,所以项目的编译级别必须统一一致,那么将编
    译插件添加到父工程,子模块依然会无条件去继承父工程的插件。
    指定编译级别前:
    File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler 查看

    在父工程的 build -> plugins 标签中添加编译插件

    
        
            
                maven-compiler-plugin
                3.5.1
                
                    1.8
                    1.8
                    UTF-8
                
            
        
    

     

     指定编译级别后:

    File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler 再次查看

    8.父工程添加依赖

    执行后效果:
    在父工程 dependencies 标签中添加 MySQL 依赖,子模块会无条件继承父工程所有依赖。
    添加 MySQL 依赖前

    添加 MySQL 依赖(父工程 pom 文件):

    
        
            mysql
            mysql-connector-java
            5.1.43
        
    

     

    添加 MySQL 依赖后 

    9.父工程管理依赖版本号

     

    以上写做法,子模块会无条件继承父工程的所有依赖,导致的问题是,本不需要的继承
    的依赖也会被继承,这就大大增加了项目模块最终打包的大小,也可能未上线埋下了隐患。
    也就是说,父工程管理的是所有项目模块的依赖,而不是某一个项目模块的依赖,所以
    某一个项目模块不需要继承父工程中的所有依赖,这就需要子项目模块向父工程声明需要的
    依赖即可(声明式依赖)。而此时,父工程实际只需要管理依赖的版本号即可。
    父工程添加 dependencyManagement

    父工程添加 dependencyManagement 标签管理依赖

     

    父工程添加 dependencyManagement

    子模块项目之前继承的依赖消失,由于父工程通过 dependencyManagement 标签管理依
    赖,那么之前子模块无条件继承的依赖就全部消失。

    父工程添加 properties 管理版本号

    properties 标签中,可以自定义标签名称来管理依赖的版本号,通常自定义的标签名
    称由“项目名称” +version 英文单词构成。被管理的依赖版本号由“ ${ 算定标签名称 } ”来代

     

    子模块声明式添加依赖

    由于父工程管理依赖的版本号,那么子模块要想继承依赖,只能通过声明式来添加依赖,
    实际上,子模块中的依赖是继承父工程依赖的版本号;如果子模块已定义依赖版本号,那么
    以子模块定义的版本号为准。
    
        
            mysql
            mysql-connector-java
        
    

     

     

  • 相关阅读:
    C++用new创建动态数组
    猿创征文|我的十二年的运维之路
    Android系统恢复出场设置流程分析
    【软件逆向】如何在windows下远程注入dll并进行虚表hook
    为什么需要 TIME_WAIT 状态
    uniapp 单选框以及多选框样式更改
    stl格式-3D三角形
    css知识学习系列(4)-每天10个知识点
    【cocos creator 】生成六边形地图
    13.真刀实枪做项目---博客系统(页面设计)
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/126499140