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