目录
[1.1 分模块设计](#1.1 分模块设计)
[1.2 分模块设计-实践编辑](#1.2 分模块设计-实践编辑)
[1.2.1 复制老项目改为spring-boot-management](#1.2.1 复制老项目改为spring-boot-management)
[1.2.2 新建maven模块runa-pojo](#1.2.2 新建maven模块runa-pojo)
[1.2.2.1 将原项目pojo复制到runa-pojo模块](#1.2.2.1 将原项目pojo复制到runa-pojo模块)
[1.2.2.2 runa-pojo引入新依赖](#1.2.2.2 runa-pojo引入新依赖)
[1.2.2.3 删除原项目pojo包](#1.2.2.3 删除原项目pojo包)
[1.2.2.4 在spring-boot-management(原项目)引入runa-pojo依赖](#1.2.2.4 在spring-boot-management(原项目)引入runa-pojo依赖)
[1.2.3 新建maven模块runa-utils](#1.2.3 新建maven模块runa-utils)
[1.2.3.1 将原项目utils复制到runa-utils模块](#1.2.3.1 将原项目utils复制到runa-utils模块)
[1.2.3.2 runa-utils引入依赖](#1.2.3.2 runa-utils引入依赖)
[1.2.3.3 spring-boot-management删除依赖](#1.2.3.3 spring-boot-management删除依赖)
[1.2.3.4 删除原项目utils包](#1.2.3.4 删除原项目utils包)
[1.2.3.5 在spring-boot-management(原项目)引入runa-utils依赖](#1.2.3.5 在spring-boot-management(原项目)引入runa-utils依赖)
[1.2.4 启动服务-测试](#1.2.4 启动服务-测试)
[1.3 总结](#1.3 总结)
[2.1 继承](#2.1 继承)
[2.1.1 新建父工程模块runa-parent](#2.1.1 新建父工程模块runa-parent)
[2.1.2 设置runa-parent打包方式为pom](#2.1.2 设置runa-parent打包方式为pom)
[2.1.3 设置runa-parent父工程未springboot](#2.1.3 设置runa-parent父工程未springboot)
[2.1.4 删除 runa-parent的src](#2.1.4 删除 runa-parent的src)
[2.1.5 修改spring-boot-management父工程为runa-parent](#2.1.5 修改spring-boot-management父工程为runa-parent)
[2.1.6 删除 spring-boot-management提示异常的标签](#2.1.6 删除 spring-boot-management提示异常的标签)
[2.1.7 在runa-pojo与runa-utils设置父工程和删除](#2.1.7 在runa-pojo与runa-utils设置父工程和删除)
[2.1.8 在父工程runa-parent配置共有依赖](#2.1.8 在父工程runa-parent配置共有依赖)
[2.2 继承实现总结](#2.2 继承实现总结)
[2.3 版本锁定](#2.3 版本锁定)
[2.3.1 将runa-parent管理版本(子工程)](#2.3.1 将runa-parent管理版本(子工程))
[2.3.2 runa-utils依赖版本删除](#2.3.2 runa-utils依赖版本删除)
[2.3.3 自定义属性](#2.3.3 自定义属性)
[2.3.3.1 runa-parent设置版本](#2.3.3.1 runa-parent设置版本)
[2.3.3.2 总结](#2.3.3.2 总结)
[2.2 聚合](#2.2 聚合)
[2.2.1 runa-parent添加](#2.2.1 runa-parent添加)
[2.2.2 runa-parent maven生命周期进行打包等](#2.2.2 runa-parent maven生命周期进行打包等)
[2.3 总结](#2.3 总结)
[3.1 介绍](#3.1 介绍)
[3.2 资源上传与下载](#3.2 资源上传与下载)
[3.3 私服配置](#3.3 私服配置)
[3.3.1 需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)](#3.3.1 需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码))
[3.3.2 在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)](#3.3.2 在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉))
[3.3.3 需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用](#3.3.3 需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用)
[3.3.4 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)](#3.3.4 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址))
[3.3.5 发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)](#3.3.5 发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试))
[3.3.6 启动本地私服](#3.3.6 启动本地私服)
[3.4 上传maven生命周期-deploy](#3.4 上传maven生命周期-deploy)
[3.5 下载](#3.5 下载)
前言:
分模块设计开发是一种软件开发方法论,它将一个大型的软件系统按照不同的功能模块进行划分,每个模块独立设计、独立开发、独立测试、独立部署和独立维护。这有助于降低整个系统的复杂度,提高系统的可维护性和可扩展性。
分模块设计开发一般包含以下步骤:
确定系统的功能模块:将整个系统划分成多个不同的功能模块,如登录模块、订单模块、支付模块等。
设计每个模块的接口:在每个模块内部,设计该模块与其他模块的接口,包括输入输出参数、数据结构等。
各个模块的独立开发:分别对每个模块进行独立的开发,每个开发人员只负责一个模块。
集成测试:在开发完成后,对各个模块进行集成测试,测试各个模块之间的接口是否正常,是否能够协同工作。
系统测试:对整个系统进行测试,模拟实际运行环境下的各种场景,保证系统整体的稳定性和可用性。
部署上线:将整个系统部署到线上环境中,进行实际的运行。
分模块设计开发的优点:
降低系统复杂度:将整个系统分模块开发,让开发人员专注于模块间的关系和模块内的逻辑,从而降低系统复杂度。
提高可维护性:每个模块独立开发,修改某个模块不影响其他模块的使用,方便维护和升级。
提高可扩展性:如果需要增加新的功能,只需要增加一个新的模块,不会影响到其他模块的运行。
提高开发效率:多个开发人员可以并行开发不同的模块,加快开发进度。
一、分模块设计与开发
1.1 分模块设计
1.2 分模块设计-实践
1.2.1 复制老项目改为spring-boot-management
新建文件夹spring_boot_project01
将之前方面复制过来改成 spring-boot-management
打开项目spring-boot-management 使用Rename 修改启动类等
1.2.2 新建maven模块runa-pojo
1.2.2.1 将原项目pojo复制到runa-pojo模块
1.2.2.2 runa-pojo引入新依赖
XML
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
1.2.2.3 删除原项目pojo包
略
1.2.2.4 在spring-boot-management(原项目)引入runa-pojo依赖
XML
<dependency>
<groupId>com.runa</groupId>
<artifactId>runa-pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
1.2.3 新建maven模块runa-utils
1.2.3.1 将原项目utils复制到runa-utils模块
1.2.3.2 runa-utils引入依赖
XML
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<!-- 阿里云OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
<!-- web 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.1.2</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
1.2.3.3 spring-boot-management删除依赖
XML
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<!-- 阿里云OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
1.2.3.4 删除原项目utils包
略
1.2.3.5 在spring-boot-management(原项目)引入runa-utils依赖
XML
<dependency>
<groupId>com.runa</groupId>
<artifactId>runa-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
1.2.4 启动服务-测试
1.3 总结
二、继承与聚合
2.1 继承
2.1.1 新建父工程模块runa-parent
2.1.2 设置runa-parent打包方式为pom
XML
<packaging>pom</packaging>
2.1.3 设置runa-parent父工程未springboot
XML
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2.1.4 删除 runa-parent的src
略
2.1.5 修改spring-boot-management父工程为runa-parent
XML
<parent>
<groupId>com.runa</groupId>
<artifactId>runa-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../runa-parent/pom.xml</relativePath>
</parent>
2.1.6 删除 spring-boot-management提示异常的标签
XML
<groupId>com.runa</groupId>
2.1.7 在runa-pojo与runa-utils设置父工程和删除<groupId>
2.1.8 在父工程runa-parent配置共有依赖
将子工程共有的依赖剪切到父工程
2.2 继承实现总结
2.3 版本锁定
2.3.1 将runa-parent管理版本(子工程)
XML
<!-- 统一管理版本标签-->
<dependencyManagement>
<dependencies>
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<!-- 阿里云OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
<!-- web 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.1.2</version>
</dependency>
</dependencies>
</dependencyManagement>
2.3.2 runa-utils依赖版本删除
XML
<dependencies>
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!-- 阿里云OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</dependency>
<!-- web 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.3.3 自定义属性
2.3.3.1 runa-parent设置版本
XML
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.24</lombok.version>
</properties>
XML
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
其他依次设置
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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.runa</groupId>
<artifactId>runa-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>runa-parent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.24</lombok.version>
<jjwt.version>0.9.1</jjwt.version>
<aliyun.oss.version>3.15.1</aliyun.oss.version>
<jaxb.version>2.3.1</jaxb.version>
<activation.version>1.1.1</activation.version>
<jaxb.runtime.version>2.3.3</jaxb.runtime.version>
<!-- 他好像不需要版本管理 因为他是spring-boot,runa-parent本身就是继承springboot-->
<spring-boot-starter-web>3.1.2</spring-boot-starter-web>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
<!-- 统一管理版本标签-->
<dependencyManagement>
<dependencies>
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jjwt.version}</version>
</dependency>
<!-- 阿里云OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun.oss.version}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.version}</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${activation.version}</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${jaxb.runtime.version}</version>
</dependency>
<!-- web 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 下面这个都可以删除-->
<version>${spring-boot-starter-web}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
2.3.3.2 总结
2.2 聚合
2.2.1 runa-parent添加
XML
<!-- 聚合其他模块-->
<modules>
<module>../runa-pojo</module>
<module>../runa-utils</module>
<module>../spring-boot-management</module>
</modules>
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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.runa</groupId>
<artifactId>runa-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 聚合其他模块-->
<modules>
<module>../runa-pojo</module>
<module>../runa-utils</module>
<module>../spring-boot-management</module>
</modules>
<name>runa-parent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.24</lombok.version>
<jjwt.version>0.9.1</jjwt.version>
<aliyun.oss.version>3.15.1</aliyun.oss.version>
<jaxb.version>2.3.1</jaxb.version>
<activation.version>1.1.1</activation.version>
<jaxb.runtime.version>2.3.3</jaxb.runtime.version>
<!-- 他好像不需要版本管理 因为他是spring-boot,runa-parent本身就是继承springboot-->
<spring-boot-starter-web>3.1.2</spring-boot-starter-web>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
<!-- 统一管理版本标签-->
<dependencyManagement>
<dependencies>
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jjwt.version}</version>
</dependency>
<!-- 阿里云OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun.oss.version}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.version}</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${activation.version}</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${jaxb.runtime.version}</version>
</dependency>
<!-- web 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 下面这个都可以删除-->
<version>${spring-boot-starter-web}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
2.2.2 runa-parent maven生命周期进行打包等
2.3 总结
三、私服
3.1 介绍
3.2 资源上传与下载
3.3 私服配置
私服配置说明
访问私服:http://192.168.150.101:8081
访问密码:admin/admin
使用私服,需要在maven的settings.xml配置文件中,做如下配置:
3.3.1 需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)
XML
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
3.3.2 在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)
XML
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.150.101:8081/repository/maven-public/</url>
</mirror>
3.3.3 需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用
XML
<profile>
<id>allow-snapshots</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven-public</id>
<url>http://192.168.150.101:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
3.3.4 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)
XML
<distributionManagement>
<!-- release版本的发布地址 -->
<repository>
<id>maven-releases</id>
<url>http://192.168.150.101:8081/repository/maven-releases/</url>
</repository>
<!-- snapshot版本的发布地址 -->
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://192.168.150.101:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
3.3.5 发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)
3.3.6 启动本地私服
1、解压: apache-maven-nexus.zip
2、进入目录: apache-maven-nexus\nexus-3.39.0-01\bin #(注意解压不要有中文路径)
3、启动服务:双击 start.bat
4、访问服务:localhost:8081
5、私服配置说明:将上述配置私服信息的 192.168.150.101 改为 localhost
3.4 上传maven生命周期-deploy
3.5 下载
新项目配置依赖
要验证下载,先将本地仓库的删除掉