在开发admin后台时,因需要,将项目拆解成两个模块,一是持久层,只对数据库进行查询更新等操作,另外一个模块依赖持久层,所有对数据库的操作都必须经过持久层。
一开始的思路是:**将持久层打包成jar包并且发布**,admin项目添加jar包的依赖,但无法很好的协同开发,admin需要什么接口要告诉持久层的开发人员,之后开发完成之后要重新打包发布,然后我再更新引用jar包,沟通成本太大,效率特别低。
 
后来改成gitmodule的方式进行引用,**将持久层改成项目的一个模块**,而非一个jar包,我可以修改持久层的代码(其实这是不安全的),理论上而言,我不应该能够修改持久层的代码,但这是从零开发,不是修修补补,还是稍微放松一点吧。。。我需要什么接口,直接在持久层写空实现,添加todo,写下这个方法所需的功能或者其他注意点,之后提交代码push即可。
使用gitmodule的方式,两个项目都有各自的版本信息,可以查看各自的git status,非常方便。
所遇到的问题
gitmodule虽好,但也有坑哦。
持久层项目与admin项目都是用gradle构建的,并且都使用的springboot。自己的单元测试都能通过,也能运行,但就是bootRun命令无法执行成功,admin项目找不到子项目(持久层)中的包。这个问题着实卡了很长时间,最好还是老大灵光一闪找到了原因——gitmodule中,子项目不能使用springboot
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 
 | buildscript {ext {
 springBootVersion = '2.1.1.RELEASE'
 }
 repositories {
 mavenCentral()
 }
 dependencies {
 classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
 }
 }
 
 apply plugin: 'java'
 //apply plugin: 'org.springframework.boot'   注释掉她
 apply plugin: 'io.spring.dependency-management'
 
 group = 'com.dby'
 version = '0.0.1-SNAPSHOT'
 sourceCompatibility = '1.8'
 
 repositories {
 mavenCentral()
 }
 
 dependencies {
 //所有org.springframework.boot开头的依赖也必须手动指定版本号
 implementation "org.springframework.boot:spring-boot-starter:${springBootVersion}"
 implementation "org.springframework.boot:spring-boot-starter-data-mongodb:${springBootVersion}"
 testImplementation "org.springframework.boot:spring-boot-starter-test:${springBootVersion}"
 }
 
 
 |