使用gitmodule构建项目时产生的问题

在开发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}"
}