创建 Maven 父子项目

  • Maven 的 聚合与 继承
  • 创建父项目
  • 创建项目
  • Maven 项目
  • 填写项目信息
  • pom.xml
  • 创建子项目(Modules)
  • 子项目 pom.xml
  • 启动类 Children1Application.class
  • 配置文件 application.yml
  • 创建更多子项目(Modules)
  • 参考资料


Maven 的 聚合与 继承

  • 聚合:在父级 中定义 <modules>子项目列进来。父知有子,而子不知父。
<modules>
		<module>springboot-redis-demo</module>
		<module>springboot-yaml-demo</module>
        <module>springboot-rabbitmq-demo</module>
    </modules>
  • 继承:在子项目中定义<parent>继承父项目的能力(包括依赖和一些属性)。子知有父,而父不知有子。
<parent>
        <artifactId>springboot-rabbitmq-demo</artifactId>
        <groupId>com.jerry</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

注意:很多时候两者是配合着一起用的。

创建父项目

创建项目

springboot3父子工程 springboot父子项目打包_java

Maven 项目

springboot3父子工程 springboot父子项目打包_spring boot_02

填写项目信息

name:项目名称

location:项目位置

springboot3父子工程 springboot父子项目打包_parent_03

pom.xml

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

    <groupId>com.jerry.demo</groupId>
    <artifactId>parent-children</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 父项目打包类型  pom:父项目,jar:直接运行,war:部署到tomcat-->
    <packaging>pom</packaging>

    <!--我们是 springboot 项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--自定义属性,方便后面引用-->
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <project.version>UTF-8</project.version>
        <mybatis.boot.starter.version>2.1.3</mybatis.boot.starter.version>
        <mysql.connector.java.version>8.0.21</mysql.connector.java.version>
        <alibaba.druid>1.1.22</alibaba.druid>
    </properties>

    <!--子项目 module都在这报名-->
    <modules>
        <module>children1</module>
        <module>children2</module>
    </modules>

    <!--被子模块继承的依赖-->
    <dependencies>
        <!--Spring Boot的核心启动器,包含了自动配置、日志和YAML-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- json -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
        </dependency>
    </dependencies>

    <!--不会直接被子模块继承。用于统一管理依赖版本-->
    <dependencyManagement>
        <dependencies>
            <!-- 数据库 -->
            <!--阿里巴巴计算平台事业部出品,为监控而生的数据库连接池 https://github.com/alibaba/druid/-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${alibaba.druid}</version>
            </dependency>
            <!--JDBC驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.connector.java.version}</version>
            </dependency>
            <!--mybatis依赖包,需要读取配置文件中的 datasource,否则报错-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.boot.starter.version}</version>
            </dependency>

            <!-- 子模块 -->
            <dependency>
                <groupId>com.jerry.demo</groupId>
                <artifactId>children1</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.jerry.demo</groupId>
                <artifactId>children2</artifactId>
                <version>${project.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
</project>

创建子项目(Modules)

springboot3父子工程 springboot父子项目打包_springboot3父子工程_04

springboot3父子工程 springboot父子项目打包_spring boot_05


springboot3父子工程 springboot父子项目打包_maven_06


File 》 New 》Module... 也能到这。

这里写错也不用担心,后面可以直接在 pom.xml 文件中修改。

springboot3父子工程 springboot父子项目打包_maven_07

子项目 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>parent-children</artifactId>
        <groupId>com.jerry.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <!--项目名称给 maven 看的-->
    <artifactId>children1</artifactId>
    <!--项目名称给人看的-->
    <name>${project.artifactId}</name>
    <!--项目描述-->
    <description>XXXX 子项目</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--web服务依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <!--打包后的文件名-->
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

启动类 Children1Application.class

package com.jerry.demo.children1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author jerryjin
 */
@SpringBootApplication
public class Children1Application {
    public static void main(String[] args) {
        SpringApplication.run(Children1Application.class, args);
    }
}

配置文件 application.yml

server:
  port: 8081

spring:
  jackson:
    default-property-inclusion: NON_EMPTY

创建更多子项目(Modules)

要多少个重复几次就好了。依赖根据需要来。