误区

之前在使用gradle时时常看到有教程说

dependences中加入mavenLocal()即可使用本地已经由maven下载好的相关依赖

这句话对于像我这样不甚了解的人可说是误解太大了,它很容易被误解为:

gradle将使用maven下载到本地的依赖,并保持结构不变

实际上gradle并不会这么做,当在maven本地依赖中读取到相对于的依赖时,gradle实际上复制了一份依赖到GRADLE_USER_HOME对应的路径中,也就是说gradle的依赖是独立于maven的,两者之间不存在相互调用的关系,只是gradle单方面复制了maven的依赖到自己的路径中。gradle使用本地maven仓库并非完全复用,若maven库中存在则复制maven的,若不存在则用自己缓存的

就因为这一句话的错误理解,我花费了数个小时来尝试将两个仓库进行合并以达到真正的复用的目的,事实上这应该是不可行的,而且可能造成安全问题。但是作为一个强迫症多少有点不爽,希望gradle以后能够有相应的解决方案吧。