在开发admin后台时,因需要,将项目拆解成两个模块,一是持久层,只对数据库进行查询更新等操作,另外一个模块依赖持久层,所有对数据库的操作都必须经过持久层。
一开始的思路是:**将持久层打包成jar包并且发布**,admin项目添加jar包的依赖,但无法很好的协同开发,admin需要什么接口要告诉持久层的开发人员,之后开发完成之后要重新打包发布,然后我再更新引用jar包,沟通成本太大,效率特别低。
后来改成gitmodule的方式进行引用,**将持久层改成项目的一个模块**,而非一个jar包,我可以修改持久层的代码(其实这是不安全的),理论上而言,我不应该能够修改持久层的代码,但这是从零开发,不是修修补补,还是稍微放松一点吧。。。我需要什么接口,直接在持久层写空实现,添加todo,写下这个方法所需的功能或者其他注意点,之后提交代码push即可。
使用gitmodule的方式,两个项目都有各自的版本信息,可以查看各自的git status,非常方便。
所遇到的问题
gitmodule虽好,但也有坑哦。
持久层项目与admin项目都是用gradle构建的,并且都使用的springboot。自己的单元测试都能通过,也能运行,但就是bootRun命令无法执行成功,admin项目找不到子项目(持久层)中的包。这个问题着实卡了很长时间,最好还是老大灵光一闪找到了原因——gitmodule中,子项目不能使用springboot
1 2 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}" }
|