微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

 

 

原文地址:https://www.jb51.cc/wenti/3285561.html

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

相关推荐