工作中內(nèi)部用到的一些通用的功能庫(kù)例如util庫(kù)如筛,網(wǎng)絡(luò)庫(kù),控件庫(kù)等,被 單獨(dú)抽取出來生成jar或者aar,放到公司內(nèi)部的maven服務(wù)器上,其他工程通過maven引用到這些通用庫(kù)酪耕。通用庫(kù)一般都是功能比較穩(wěn)定,不會(huì)頻繁迭代轨淌,但是還是會(huì)碰到有需要修改的時(shí)候因妇,修改完后發(fā)布到maven上,一般正式發(fā)布是需要版本號(hào)+1猿诸。
今天碰到的一個(gè)問題,背景:app工程XXXProject狡忙,有個(gè)CommonModule的module梳虽,這個(gè)commonModule引用了libA和libB,同時(shí)libB又引用了libA灾茁。libA和libB是作為通用框架庫(kù)部署在內(nèi)部maven服務(wù)器上窜觉。libA和libB有過修改,后面又以同樣的版本號(hào)被發(fā)布到maven服務(wù)器上北专。在gradle項(xiàng)目工程里sync工程禀挫,則會(huì)先去本地的.gradle目錄(默認(rèn)是C:\Users{用戶名}.gradle\caches\modules-2)里去找,如果找到拓颓,就直接用本地的语婴,否則才去遠(yuǎn)程sync下來。所以,如果同版本號(hào)的庫(kù)要重新sync下來砰左,需要去.gradle目錄里把對(duì)應(yīng)包名里的文件刪掉匿醒。jar或者aar在:C:\Users{用戶名}.gradle\caches\modules-2\files-2.1里。今天碰到的問題刪了前面提到的路徑下的文件后缠导,sync的時(shí)候還是碰到以下錯(cuò)誤:
Error:A problem occurred configuring project ':XXXXProject'.
Could not resolve all dependencies for configuration ':XXXProject:_DebugPublishCopy'.
Could not find CommonLibs:libA:unspecified.
Required by:
project : CmmonModule> libB:1.0.0
通用庫(kù)的包上傳到maven上廉羔,maven是會(huì)存儲(chǔ)這個(gè)aar或者jar文件,同時(shí)也會(huì)維持一份配置僻造,標(biāo)明該aar/jar依賴哪些其他的庫(kù)憋他。這個(gè)依賴配置信息是會(huì)同時(shí)sync下來到gradle的本地倉(cāng)庫(kù)里(默認(rèn)路徑C:\Users{用戶名}.gradle\caches\modules-2\metadata-2.16\descriptors
上面的異常,是由于libA和libB重新修改時(shí)候編譯里一些配置有改變髓削,導(dǎo)致maven配置文件有修改竹挡。所以這里操作要注意的要點(diǎn):
- 如果lib庫(kù)同版本更新,重新sync工程蔬螟,需要同時(shí)刪除 modules-2\files-2.1和metadata里這2個(gè)lib對(duì)應(yīng)的目錄此迅,然后重新sync一下就可以了。
- lib庫(kù)正式發(fā)布應(yīng)該版本號(hào)+1