体系结构课上布置的一个作业是给一个项目做架构恢复:将项目中包之间的依赖关系、微服务之间的调用关系等抽取整理为具有一定格式的json文件,之后可使用该json文件进行微服务的一些操作与研究。
基本过程:
1.搜集包的依赖:使用 idea 自带的 Analyze Dependencies 功能搜集包的依赖,java自带的包的依赖不予考虑。
这里遇到一个问题:当对某个包进行编译时,要先把它依赖的包编译并install,否则会报错Could not find artifact …:pom:。。。。。
2.搜集微服务模块的调用:将本项目中配置、工具类之外的包作为一个微服务,使用静态检查的方法搜集微服务模块之间的调用。将其中的网络请求的方法(GET/POST/DELETE等mapping)作为微服务的接口。将方法的输入参数与输出参数作为接口的信息。
注意:有的方法返回的是一个嵌入式的结构类,识别这些信息的时候需要深入识别返回的类的结构。
其中int,String等类型记为Basic,自定义的类要写清楚类的结构。
如下是分析结果:
{
"projectName": "XXXX", // 项目名
"repositories": [
{
"gitUrl": "https://gitee.com/XXXXXXX",
"arcs":[ // 架构相关数据
{
"version": {
// 指明这个数据是哪个版本的
"sha": "065c25809253811eba98faa15aebXXXXX",
"tag": "xxx" // tag如果没有则不填
},
"modules": [ // 代码仓可能包含多个模块
{
"path": "mogu_sms", // 模块目录相对于代码仓根目录的路径
"language": "Java", // Java