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 标签中添加编译插件

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <target>1.8</target>
                <source>1.8</source>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

 

 指定编译级别后:

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

8.父工程添加依赖

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

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

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.43</version>
    </dependency>
</dependencies>

 

添加 MySQL 依赖后 

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

 

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

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

 

父工程添加 dependencyManagement

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

父工程添加 properties 管理版本号

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

 

子模块声明式添加依赖

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

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一道光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值