优秀的编程知识分享平台

网站首页 > 技术文章 正文

IDEA中创建Springboot父子工程(idea创建父子项目)

nanyue 2024-10-09 13:10:19 技术文章 5 ℃

一.为什么要创建父子工程?

1.方便jar包管理,在父工程中管理依赖包,对版本做统一控制

2.方便构建,在父工程中执行构建命令,子工程会自动构建

二.创建过程

1.环境准备

Jdk1.8+,IDEA2018,Springboot2.3.12.RELEASE

2.创建springboot父工程

File===>New===>Project

选择Next

输入相关信息后,点Next

点击Next,如下:

点击Finish即可完成。

修改pom文件内容如下图所示:


在pom文件中增加<dependencyManagement>标签,目的是为了管理整个工程下依赖的版本号,被<dependencyManagement>标签管理的依赖,只会在父工程中被引用,如果子工程中需要引入相同的依赖,则需要在子工程项目中再次引入,如果在子工程中没有添加依赖的版本号,则以父工程的为准。如下图代码所示

<?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.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lsh</groupId>
    <artifactId>springboot-learning</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-learning</name>
    <packaging>pom</packaging>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!--
      依赖配置:
            目前这里的配置的依赖所引入的jar包在此工程下的所有子工程都会被引入
    -->
    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>
    </dependencies>

    <!--
       依赖管理:
             这里的配置的依赖只是对依赖版本的管理配置,子工程并不会直接引入
             如果子工程要需要引入只需要加入如下标签:
              <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
              </dependency>
             这样就可以引入mysql的驱动了,这样的好处就是可以在父工程统一一下整个工程的jar包依赖版本
             而且如果有的工程不需要一些jar就可以不进行引入
     -->
    <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</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>
    </dependencies>
    </dependencyManagement>
    <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>

2.创建第一个子工程

File===>New===>Module





到此,第一个子工程创建完成

三.总结

1.父子工程对于模块的分离程度更高了

按照以往的创建项目方式,一个maven项目就是一个大工程,一开始还能进行简单的测试编译,但是随着项目的不断变大和复杂化,后期再做改动则可能牵一发而动全身。但是使用父子工程,每个模块都是独立的,他们通过父控制器聚合在一起,这样当你要改动一个模块的时候你改动的也只是这一个模块而已,并不会影响其他的模块。

2.父子工程使代码更清晰,提高了重用

父控制器的存在之一就是为了去除重复
一个项目存在多个模块,可能同时由多个人开发,比如abc3个模块,3个模块都是基于spring的那么3个开发都需要引入spring的核心jar包,这样就引入了3份,但是使用父子工程,则只需要在父工程中引入了,则子工程自动继承。

最近发表
标签列表