

one 模块引入了api,api_blank,common-api依赖;本地maven仓库并不含这三个依赖,api,api_blank模块和one模块在一个文件夹里,引入成功了,common-api和one不在一个文件夹,没有引入成功。为什么maven还可以引入api,api_blank依赖,他俩并没有install到本地仓库啊,这设计看不懂,感觉不太合理,是一种妥协的做法。


one 模块引入了api,api_blank,common-api依赖;本地maven仓库并不含这三个依赖,api,api_blank模块和one模块在一个文件夹里,引入成功了,common-api和one不在一个文件夹,没有引入成功。为什么maven还可以引入api,api_blank依赖,他俩并没有install到本地仓库啊,这设计看不懂,感觉不太合理,是一种妥协的做法。
maven可以引入同一个项目中的其他模块作为依赖,这是maven的一个特性。
maven在构建项目时,会先构建项目内部的模块,然后再使用这些模块。比如在一个项目中,module-a依赖于module-b,maven会先构建module-b,然后用其构建产物(比如jar包)提供给module-a使用。
所以你看到的api和api_blank模块可以被one模块使用,是因为maven会先构建这两个模块,一旦这两个模块构建完成,其产物就可以被one模块使用了。
而common-api不在同一项目中,maven无法先构建它,所以无法提供给one模块使用。这需要common-api被安装到本地maven仓库后,one模块才能依赖它。
所以这不是maven的妥协设计,而是其预先构建项目内部依赖模块的正常机制。让项目内部的依赖关系可以自然使用,不需要像外部依赖一样先install到仓库。