springboot父子工程的创建
java nacos 开发 3

代码仓库

一、父工程pom(无代码,删除src,打包配置改为pom)

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">




    <!--1、以下:定义父项目的唯一标识,子模块会继承这些信息(groupId、version)-->
    <!-- 基本坐标 -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.iyll</groupId>
    <artifactId>springboot-nacos</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging> <!-- 核心:父项目必须用pom打包 -->




    <!--2、以下:通过<modules>标签聚合所有子模块(如微服务模块、公共工具模块),方便统一构建(如mvn clean install可一次性构建所有子模块) -->
    <!--  子模块目录名必须与<module>标签中的值一致  -->
    <modules>
        <module>iyll-user</module>
        <module>iyll-order</module>
    </modules>




    <!--3、以下:通过<properties>标签定义全局变量-->
    <!--集中管理版本号(如Java版本、Spring Boot版本、依赖版本),避免子模块重复写版本,方便后续升级-->
    <properties>
        <!-- 基础环境 -->
        <java.version>17</java.version> <!-- Java版本(与Spring Boot 3.x兼容) -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 编码格式 -->
        <!-- Spring 生态版本 -->
        <spring.boot.version>3.4.0</spring.boot.version> <!-- Spring Boot版本 -->
        <spring.cloud.version>2023.0.1</spring.cloud.version> <!-- Spring Cloud版本(微服务必选) -->
        <!-- 常用依赖版本 -->
        <hutool.version>5.8.35</hutool.version>
        <mysql.version>8.0.33</mysql.version> <!-- MySQL驱动版本 -->
        <lombok.version>1.18.30</lombok.version> <!-- Lombok版本 -->
        <mybatis-plus.version>3.5.12</mybatis-plus.version> <!-- mybatis-plus版本 -->
        <!-- 插件版本 -->
        <maven-compiler-plugin.version>3.12.1</maven-compiler-plugin.version> <!-- 编译插件版本 -->
    </properties>




    <!--4、以下:通过<dependencyManagement>标签统一管理依赖版本,子模块引入依赖时无需指定版本 -->
    <!-- 避免版本冲突(如Spring Boot与Spring Cloud版本不兼容 -->
    <dependencyManagement>  <!--这个标签是版本管理的,子模块引入依赖时,无需写版本version-->
        <dependencies>
            <!-- (1)Spring Boot 依赖管理(必须) -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- Spring Boot Web Starter 版本管理 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring.boot.version}</version> <!-- 版本由父项目属性定义(如3.5.3) -->
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring.boot.version}</version> <!-- 继承父项目的Spring Boot版本 -->
                <scope>test</scope> <!-- 默认scope为test(仅测试阶段生效) -->
            </dependency>

            <!-- (2)Spring Cloud 依赖管理(微服务必选) -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope> <!-- 导入Spring Cloud的依赖管理 -->
            </dependency>
            <!-- (3)常用第三方依赖(统一版本) -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope> <!-- Lombok无需打包到jar -->
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>




    <!--5、以下:公共插件配置(子模块继承) -->
    <build>
        <pluginManagement>  <!--这是用来插件版本管理的,子模块引入插件时,无需写版本version-->
            <plugins>
                <!-- (1)编译插件(必须) -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <source>${java.version}</source> <!-- 源文件Java版本 -->
                        <target>${java.version}</target> <!-- 目标class文件Java版本 -->
                        <encoding>${project.build.sourceEncoding}</encoding> <!-- 编码格式 -->
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>




    <!-- 6、以下:镜像仓库配置(可选,加速依赖下载) -->
    <repositories>
        <repository>
            <id>aliyun-public</id>
            <name>Aliyun Public Repository</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled> <!-- 禁用快照版本(稳定) -->
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>aliyun-plugin</id>
            <name>Aliyun Plugin Repository</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</project>

二、子工程pom(需要yml配置、application启动类、以及spring-boot-starter-web、spring-boot-starter-test依赖)

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">




    <!--1、子模块通过<parent>标签继承父项目的**groupId、version、dependencyManagement、build**等配置,是子模块的核心基础。-->
    <modelVersion>4.0.0</modelVersion>
    <parent><!--父亲的意思,指定父项目坐标-->
        <groupId>com.iyll</groupId>
        <artifactId>springboot-nacos</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath> <!-- 正确指向父项目的pom.xml -->
    </parent>




    <!-- 2. 子模块基本标识(必选) -->
    <artifactId>iyll-user</artifactId><!-- 子模块唯一标识(必写) -->
    <packaging>jar</packaging><!-- 打包方式(Spring Boot应用必选jar) -->

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>




    <!-- 3. 依赖引入(无版本,父项目管理) -->
    <!--子模块不要重复配置dependencyManagement,否则会覆盖父项目的版本管理,导致版本冲突。-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 可选:测试 Starter(包含JUnit、Spring Test等) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId> <!-- Lombok(无需版本,父项目已配置scope=provided) -->
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId> <!-- MySQL驱动(无需版本) -->
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
    </dependencies>




    <!-- 4. 构建配置(必选) -->
    <build>
        <plugins>
            <!-- Spring Boot 打包插件(必选,生成可执行jar) -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId> <!-- 插件版本由父项目pluginManagement管理 -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal> <!-- 重打包为可执行jar(默认) -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

springboot父子工程的创建
http://111.180.147.175:37008/archives/springbootfu-zi-gong-cheng-de-chuang-jian
作者
iYll
发布于
更新于
许可