我的编程空间,编程开发者的网络收藏夹
学习永远不晚

IDEA搭建Maven模块化项目的实现方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

IDEA搭建Maven模块化项目的实现方法

今天小编给大家分享的是IDEA搭建Maven模块化项目的实现方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

目录
  • 前言

  • 软硬件环境

  • 项目搭建

    • 1.创建 SpringBoot 父项目

    • 2. 构建子项目centerdao

    • 3. 构建子项目centerweb

  • 建立父子 Module 依赖

    • 1 删除不必要文件

    • 2.修改 Parent 项目 packaging

    • 3.修改子项目pom.xml 信息

    • 4.补充说明

  • 项目继承关系

    • 验证项目

      • 参考

        1.前言

        为了更好地组织和管理项目代码。通过将一个大型项目分解成多个模块,每个模块都可以独立地编译、测试和部署,从而提高项目的可维护性和可扩展性。多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。

        构建微服务项目,基本上会对模块进行明确的划分,比如:

        • 抽象定义公共代码及工具类封装进行引用

        • 业务代码进行单独定义模块

        • 对外提供的接口服务单独定义模块

        • 不同功能系统不同模块

        • ......

        上面的拆分也并非绝对,随着架构师对于项目结构的不同理解,可能会衍生出不同的模块

        本篇文章会详细演示如何创建 SpringBoot 父子模块的项目,针对部分知识点着重讲解

        2. 软硬件环境

        电脑: win10

        创建项目工具: IDEA 2022.3

        JDK 版本:JDK8

        Maven版本: 3.6.1

        3.项目搭建

        3.1.创建 SpringBoot 父项目

        1)首先打开 IDEA 工具,创建spring项目 ,点击File ---->new ---> Create New Project

        IDEA搭建Maven模块化项目的实现方法

        2)选择 Spring Initializr(初始化),选择Project SDK 1.8,类型选择maven,Java语言选择8

        IDEA搭建Maven模块化项目的实现方法

        Group: 项目组织唯一的标识符,实际对应 Java 的包的结构,是 main 目录里 Java 的目录结构Group 也就是 groupId,分为多个段;一般情况下 第一段为域,第二段为公司,第三段为项目名称。以 Nacos 源码进行举例,Group 为 com.alibaba.nacos:com 为商业组织,alibaba 为公司名称,nacos 就是项目名称

        Artifact: 项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称,Artifact 即为 artifactId。

        Type: 分为四种不同的类型,日常我们选择默认第一条就行,也就是 Maven Project

        Language: 开发语言的话自然就是默认的 Java

        Packaging: 打包方式,分为 War 包 和 Jar 包,这里选择 Jar 包

        Java Version: 选择 Java 的一个版本,再坚持 20 年的 JDK 1.8

        Version: 当前项目的一个版本,SNAPSHOT 为快照的意思

        开发时一般使用此类型,因为对于 Maven 仓库的同步较为友好,有不同纬度的同步选择

        Name: 定义项目名称

        Description: 定义项目描述信息,帮助别人更好的了解项目

        Package: 定义 main.java 目录下的结构

        3)选择 SpringBoot 版本信息以及 Pom.xml 文件依赖组件

        这里选择的 SpringBoot 版本是 2.7.1,jdk8对应2.*版本,点击 Next 继续进行创建项目

        IDEA搭建Maven模块化项目的实现方法

        4)一个标准的 SpringBoot 项目就产生了

        IDEA搭建Maven模块化项目的实现方法

        3.2. 构建子项目centerdao

        在父项目的基础上直接创建module

        1)点击菜单栏中 File -> New -> Module,不同版本中可能会有一点差异

        IDEA搭建Maven模块化项目的实现方法

         2)这里就是重复上述在创建 SpringBoot 项目时的步骤,Next 下一步

        IDEA搭建Maven模块化项目的实现方法

        3)配置可按照需求进行选择,因为不同的 Module 需要引用不同的 Pom 依赖,后面会与 Parent 保持一个交互,确认创建信息,点击 Finish 生成项目

        IDEA搭建Maven模块化项目的实现方法

        4)最终结构目录如下,项目已成功创建,后续我们要修改其中的 Pom.xml 使其成为真正的父子项目

        IDEA搭建Maven模块化项目的实现方法

        3.3. 构建子项目centerweb

        1)创建步骤与上边的centerdao一致

        IDEA搭建Maven模块化项目的实现方法

         2)添加spring web依赖,web项目作为整个项目的启动项目,继续添加代码简化依赖lombok

        IDEA搭建Maven模块化项目的实现方法

        3)最终项目结构如下 

        IDEA搭建Maven模块化项目的实现方法

        4. 建立父子 Module 依赖

        将建立的 Parent 项目与后面创建的 Module 产生关联,需要改动以下几点

        修改 Parent 项目 Pom.xml 的打包方式 packaging 标签打包方式为 pom删除不必要文件并梳理 Pom.xml 依赖上下级关系需要新加一个 modules 标签,包含所有子项目,将所有的子模块都引入进去

        对于子工程中的 .xml 文件

        修改子项目Module 项目 pom.xml中parent 标签为其父工程添加打包方式为 jar删除依赖包:继承父工程的依赖包

        4.1 删除不必要文件

        1)删除父项目红框标注的内容:class="lazy" data-src 文件是保存源代码的,可是我们的多模块的代码存放在多个架构层中,所以不需要这个 class="lazy" data-src 来存放代码

        2)删除除启动项目centerweb之外的启动文件和配置文件和启动类

        IDEA搭建Maven模块化项目的实现方法

        删除后的项目结构是这样的: 

        IDEA搭建Maven模块化项目的实现方法

        4.2.修改 Parent 项目 packaging

        打开 Parent 项目的根 Pom.xml 文件,新增下方代码

            <!--打包方式-->    <packaging>pom</packaging>    <modules>        <!-- 配置子项目-->        <!-- 对应artifactId-->        <module>centerdao</module>        <module>centerweb</module>    </modules>

        packaging 包含三个值 Jar、War、Pom,默认 Jar的方式

        首先来解释下 packaging 为 Pom 的意思,宏观而言即没有代码需要测试或者编译,也没有资源需要处理

        Jar: 内部调用或作为服务进行发布使用

        War: 需要部署的项目

        Pom: 寓意为一个父级项目,一般作为项目聚合和依赖传递使用

        modules 代表了 Parent 项目下的子 Module,体现了聚合的思想

        这里把 父项目Parent 项目的 Pom.xml 配置复制出来,帮助大家后续排查问题

        <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.7.11</version>        <relativePath/>     </parent>    <groupId>com.ykx.center</groupId>    <artifactId>centerparent</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>centerparent</name>    <description>SpringBoot 父子模块项目</description>    <properties>        <java.version>1.8</java.version>    </properties>    <!--打包方式-->    <packaging>pom</packaging>    <modules>        <!-- 配置子项目-->        <!-- 对应artifactId-->        <module>centerdao</module>        <module>centerweb</module>    </modules>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

        spring-boot-maven-plugin 的作用是运行 mvn package 时会将项目打包为可运行的 jar 包,java -jar 运行即可

        如果不加这个 pluginsjava -jar xxx.jar 会报出如下错误

        xxx/target/bootdemo-remote-api-0.0.1-SNAPSHOT.jar中没有主清单属性

        4.3.修改子项目pom.xml 信息

        创建后的子项目的 Parent 信息是 SpringBoot 配置,修改后如下

        <parent><groupId>com.ykx.center</groupId><artifactId>centerparent</artifactId><version>0.0.1-SNAPSHOT</version></parent>

        4.4.补充说明

        另外说一下 dependencies 和 dependencyManagement 标签做一个讲解

        1)dependencies

        如果 Parent 项目中使用 dependencies 标签,标签内的依赖默认传递子 Module,不用子 Module 进行显示书写依赖

        2)dependencyManagement

        dependencyManagement 与dependencies 不同的是,标签内的依赖不会默认传递子 Module,其作用只是为了统一版本声明        

        如果子 Module 依赖 Parent 项目中 dependencyManagement 标签内的 pom 依赖,需要显示在子 Module 的 pom 文件中进行书写

        5. 项目继承关系

        我们按照《构建子 Module》章节的内容,构建出如下所述的子 Module,如果centerweb项目引用centerdao项目

        <!--引用dao项目--><dependency><groupId>com.ykx</groupId><artifactId>centerdao</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

        然后修改centenweb子 Module 的 pom.xml 文件如下

        <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.ykx.center</groupId><artifactId>centerparent</artifactId><version>0.0.1-SNAPSHOT</version></parent><groupId>com.centerweb</groupId><artifactId>centerweb</artifactId><version>0.0.1-SNAPSHOT</version><name>centerweb</name><description>centerweb子项目</description><properties><java.version>1.8</java.version><centerdao.version>0.0.1-SNAPSHOT</centerdao.version></properties><dependencies><!--引用dao项目--><dependency><groupId>com.ykx</groupId><artifactId>centerdao</artifactId><version>${centerdao.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

        通过继承关系的设置,centerdao 中的代码就可以被 centerweb  项目进行引用

        6. 验证项目

        在 Parent 项目 pom.xml中 dependencies 标签中定义了 spring-boot-starter-web 依赖,直接使用 web 相关内容即可,直接可以运行

        centerweb中创建 Controller 控制器

        @RestControllerpublic class DemoController {     @RequestMapping("/ok")    public String test() {           return "OK";    }}

        启动项目

        IDEA搭建Maven模块化项目的实现方法

        启动后端项目成功后,使用restfultool请求接口

        IDEA搭建Maven模块化项目的实现方法

        参考

        IDEA 最便捷创建 SpringBoot 父子 Module 项目

        关于IDEA搭建Maven模块化项目的实现方法就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

        免责声明:

        ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

        ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

        IDEA搭建Maven模块化项目的实现方法

        下载Word文档到电脑,方便收藏和打印~

        下载Word文档

        猜你喜欢

        IDEA搭建Maven模块化项目的实现方法

        今天小编给大家分享的是IDEA搭建Maven模块化项目的实现方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。目录1.前言2. 软硬件环境3.项目搭建3.1.创建 SpringBoo
        2023-07-06

        IDEA搭建Maven模块化项目的实现

        本文主要介绍了IDEA搭建Maven模块化项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
        2023-05-20

        IDEA创建SpringBoot父子Module项目的实现方法

        本篇文章和大家了解一下IDEA创建SpringBoot父子Module项目的实现方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录前言1. 软硬件环境2. 创建 SpringBoot 项目3. 构建子 Module4
        2023-07-06

        搭建maven私有仓库的方法实现

        Maven是一个流行的Java项目管理工具,它可以帮助我们管理项目的构建、报告和文档,本文主要介绍了搭建maven私有仓库的方法实现,感兴趣的可以了解一下
        2023-05-20

        SpringBoot + proguard+maven多模块实现代码混淆的方法

        这篇文章将为大家详细讲解有关SpringBoot + proguard+maven多模块实现代码混淆的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SpringBoot + Proguard + Maven 多模块实现代码混淆前言代码混淆是一种安全措施,通过重命名和修改代码中的变
        SpringBoot + proguard+maven多模块实现代码混淆的方法
        2024-04-02

        在java项目中实现工厂模式的方法

        在java项目中实现工厂模式的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 工厂模式的实例详解工厂方法中的“工厂”和我们平常理解的一样:用于生产产品。而客户是要和
        2023-05-31

        Python在不同目录下导入模块的实现方法

        python在不同层级目录import模块的方法 使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。 1. 同级目录下的调用 目录结构如下:? src |? mod1.py
        2022-06-05

        Pytorch搭建YoloV5目标检测平台实现的方法

        这篇文章主要讲解了“Pytorch搭建YoloV5目标检测平台实现的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pytorch搭建YoloV5目标检测平台实现的方法”吧!YoloV5实
        2023-06-30

        在Java项目中实现装饰者模式的方法

        在Java项目中实现装饰者模式的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。装饰模式在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对
        2023-05-31

        创建一个ASP.NET MVC5项目的实现方法(图文)

        创建第一个MVC项目 选择] ASP.NET Web应用程序(.NET Framework)选择一下创建的路径选择MVC到这里恭喜你成功的创建了你的MVC项目到此这篇关于创建一个ASP.NET MVC 5项目的文章就介绍到这了,更多相关AS
        2022-06-07

        中项目启动时实现初始化方法的加载参数是什么

        中项目启动时实现初始化方法的加载参数是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springboot项目启动,初始化方法加载参数今天我看到项目中用到了
        2023-06-22

        编程热搜

        • Python 学习之路 - Python
          一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
          Python 学习之路 - Python
        • chatgpt的中文全称是什么
          chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
          chatgpt的中文全称是什么
        • C/C++中extern函数使用详解
        • C/C++可变参数的使用
          可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
          C/C++可变参数的使用
        • css样式文件该放在哪里
        • php中数组下标必须是连续的吗
        • Python 3 教程
          Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
          Python 3 教程
        • Python pip包管理
          一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
          Python pip包管理
        • ubuntu如何重新编译内核
        • 改善Java代码之慎用java动态编译

        目录