首页 > 其他分享 >多模块 Spring 项目构建

多模块 Spring 项目构建

时间:2024-08-10 15:39:18浏览次数:4  
标签:xml 依赖 Spring boot module pom 构建 模块

在一个多模块的 Spring 项目中,父模块通常被定义为一个 pom.xml 文件,包含所有子模块的公共配置、依赖和插件。子模块通过继承父模块的 pom.xml 文件,来共享和管理这些公共依赖和版本信息。

实现步骤

  1. 创建父模块(Parent Module)

    • 在父模块的 pom.xml 中,定义所有的依赖管理和版本控制。
    • 确保 <packaging> 类型设置为 pom,因为父模块不需要生成 JAR 或 WAR 文件。
    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>parent-module</artifactId>
        <version>1.0.0</version>
        <packaging>pom</packaging>
    
        <modules>
            <module>module-a</module>
            <module>module-b</module>
        </modules>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                    <version>3.1.0</version>
                </dependency>
                <!-- 其他依赖 -->
            </dependencies>
        </dependencyManagement>
        
        <properties>
            <!-- 定义共享版本 -->
            <spring.boot.version>3.1.0</spring.boot.version>
            <!-- 其他属性 -->
        </properties>
    
        <dependencies>
            <!-- 子模块公共依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <!-- 其他依赖 -->
        </dependencies>
    
        <build>
            <plugins>
                <!-- 共享插件配置 -->
            </plugins>
        </build>
    </project>
    
  2. 创建子模块(Submodules)

    • 在每个子模块的 pom.xml 中,继承父模块的配置。
    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>com.example</groupId>
            <artifactId>parent-module</artifactId>
            <version>1.0.0</version>
            <relativePath>../pom.xml</relativePath> <!-- 指向父模块的相对路径 -->
        </parent>
    
        <artifactId>module-a</artifactId>
    
        <dependencies>
            <!-- 使用父模块中定义的版本和依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <!-- 如果需要,可以添加模块特有的插件 -->
            </plugins>
        </build>
    </project>
    

关键点

  • dependencyManagement: 父模块中的 dependencyManagement 标签下定义的依赖不会自动被子模块继承,但子模块可以声明这些依赖而不需要指定版本号,版本由父模块统一管理。
  • dependencies: 父模块中的 dependencies 标签下定义的依赖会被子模块自动继承。
  • relativePath: 子模块中的 <parent> 标签的 relativePath 属性用于指定父模块的相对路径。

通过这种方式,父模块可以统一管理所有子模块的依赖版本,确保项目中所有模块使用一致的依赖版本。

标签:xml,依赖,Spring,boot,module,pom,构建,模块
From: https://www.cnblogs.com/echohye/p/18352363

相关文章

  • 入门岛3-Git 的使用与项目构建
    任务概览任务1:破冰活动:自我介绍任务2:实践项目:构建个人项目参考:git流程:csdn1csdn2任务1:破冰活动:自我介绍1.Git是一种开源的分布式版本控制系统,广泛应用于软件开发领域,尤其是在协同工作环境中。它为程序员提供了一套必备的工具,使得团队成员能够有效地管理和......
  • 12.面试题——Spring Boot
    1.SpringBoot是什么?SpringBoot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。2.为什么要用SpringBoot?快速开发快速整合第三方框架(Maven依赖关系,Maven继承)简化XML的配......
  • 免费【2024】springboot 高校竞赛管理系统的设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 免费【2024】springboot 高校教务管理系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 免费【2024】springboot 高校奖助学金系统的设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 免费【2024】springboot 高校会议室预订管理系统的设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • Java SpringBoot实现PDF转图片
    不是单页图片,是多页PDF转成一张图片的逻辑。我这里的场景是PDF转成图片之后返回给前端,前端再在图片上实现签字,并且可拖拽的逻辑,就是签订合同的场景。但是这里只写后端多页PDF转图片的逻辑。先说逻辑,后面直接上代码,大致分为以下几步:读取PDF文件(我的代码里是将在线的URL转成Inp......
  • spring启动流程
    ` publicvoidrefresh()throwsBeansException,IllegalStateException{this.startupShutdownLock.lock();try{//启动关闭线程,这个线程用来表示启动当前容器使用的线程//该成员变量在之前的版本中并不存在,也是为了支持后续的并发实例化bean的情况this.startupShutdown......
  • springboot 博客交流平台-计算机毕业设计源码56406
    摘要博客交流平台作为一种重要的网络平台,为用户提供了展示自我、分享经验和与他人互动的空间。在国内外,研究者们关注博客交流平台的各个方面,并取得了显著的进展。研究内容主要包括用户体验和界面设计、社交化和互动性、多媒体内容支持、移动设备适配和跨平台体验、数据分析......
  • 初识Spring
    文章目录一.Spring是什么?1.为什么要学?2.学什么?3.怎么学?二.Spring相关概念1.初识Spring1.1.Spring家族1.2.了解Spring发展史2.Spring系统架构2.1.系统架构图2.2.课程学习路线3.Spring核心概念3.1.目前项目中的问题3.2.IOC、IOC容器、Bean、DI3.3.核心......