🥘父子项目搭建

新建SpringBoot项目(父项目scm)

springboot 父子项目打包 The POM for_spring boot

下一步

springboot 父子项目打包 The POM for_java_02

 完成

springboot 父子项目打包 The POM for_xml_03

springboot 父子项目打包 The POM for_java_04

 修改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.4</version>
        <relativePath/>
    </parent>
    <groupId>com.moming</groupId>
    <artifactId>scm</artifactId>
    <!--版本号可自定义-->
    <version>14-SNAPSHOT</version>
    <packaging>pom</packaging>

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

    <build>

    </build>

</project>

接下来在父项目下创建子项目

springboot 父子项目打包 The POM for_xml_05

springboot 父子项目打包 The POM for_maven_06

springboot 父子项目打包 The POM for_maven_07

springboot 父子项目打包 The POM for_spring boot_08

修改scm-authority/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.moming</groupId>
        <artifactId>scm</artifactId>
        <version>14-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
  
    <artifactId>scm-authority</artifactId>
    
    <dependencies>
        <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>
    </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>

springboot 父子项目打包 The POM for_java_09

同理创建其他子项目scm-api、scm-app、scm-core、scm-dao、scm-dto、scm-entity、scm-service等步骤一致

最后修改父模块的pom.xml

springboot 父子项目打包 The POM for_java_10

<?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.4</version>
        <relativePath/>
    </parent>
    <groupId>com.moming</groupId>
    <artifactId>scm-root</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <modules>
        <module>scm-authority</module>
        <module>scm-app</module>
        <module>scm-dao</module>
        <module>scm-dto</module>
        <module>scm-entity</module>
        <module>scm-service</module>
        <module>scm-api</module>
        <module>scm-core</module>
    </modules>

    <dependencyManagement>
        <dependencies>

        </dependencies>
    </dependencyManagement>
    <build>
        <pluginManagement>

        </pluginManagement>
    </build>

</project>

以上就是父子项目搭建的基本步骤

补充

<version>0.0.1-SNAPSHOT</version>这里的版本号可以自定义

子模块继承的版本号要与父模块的版本号保持一致

springboot 父子项目打包 The POM for_spring boot_11

 比如父模块用的14-SNAPSHOT,所有子模块都是14-SNAPSHOT

🍣子模块补充

既然是多模块结构,那么子模块中有些东西是不需要的,这里做一些修改,将除了scm-app模块的,其他模块src包下的单元测试test、java包下的启动类、pom.xml里的dependency依赖、plugins插件都删掉,其他就看个人需求进行修改了,只需要保留一个启动类就行

各个模块的大概作用:

scm-api
• 暴露的接口
 scm-app
• 项目的启动模块,包括controller,aop,advice等
scm-authority
• 组件模块,比如一些自定义的starter
scm-core
• 基础工具模块,放一些核心工具类
scm-dao
• 数据访问模块,放一些dao或者mapper
scm-dto
• 暴露的对象,和外部打交道的对象
scm-entity
• 内部的,和数据库打交道的对象
scm-service
• 业务处理模块,进行主要的逻辑处理

🍱多模块发布到私仓

打开阿里的云效控制台,创建企业私仓

阿里云

注册账号登录,在创建企业时需要实名认证,可按照要求进行支付包授权认证,比较快

springboot 父子项目打包 The POM for_spring_12

 打开制品仓库/Maven仓库/非生产库-snapshot

springboot 父子项目打包 The POM for_java_13

选择仓库指南/Maven方式/推送(覆盖方式)

下载settings.xml

springboot 父子项目打包 The POM for_maven_14

 将settings.xml放到C:\Users\ASUS\.m2下(ASUS或者Administrator)或者IDEA配置的maven下conf/settings.xml

springboot 父子项目打包 The POM for_spring_15

与IDEA中maven配置对应

c盘默认或者maven文件夹中

springboot 父子项目打包 The POM for_xml_16

springboot 父子项目打包 The POM for_spring boot_17

 IDEA打开Terminal

springboot 父子项目打包 The POM for_java_18

 输入以下指令,上传项目到私仓

mvn clean  deploy -DskipTests

如果发布某一个子模块,那就cd 到对应的文件夹下 执行 mvn clean  deploy -DskipTests

如下所示 

springboot 父子项目打包 The POM for_maven_19

执行该指令之后,可以看到项目已经上传到库中

springboot 父子项目打包 The POM for_maven_20

 点击一个可以查看该模块的信息,包括依赖

springboot 父子项目打包 The POM for_spring boot_21

当然也可以使用maven插件,比较方便,但是不跳过测试会比较慢

springboot 父子项目打包 The POM for_spring_22

🍛过滤多模块发布到私仓

子模块跳过deploy

子模块pom.xml添加配置
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

在上传父子项目时,有些子项目不需要上传即可通过此配置跳过上传(比如scm-dao,scm-entity)

springboot 父子项目打包 The POM for_spring_23

忽略递归子模块,只发布父项目

mvn clean package deploy -N -DskipTests
只发布具体子模块
mvn clean package deploy -DskipTests -pl scm-api,scm-dto
其中 scm-api,scm-dto是模块名称,中间用逗号