gradle構建maven提示Missing required attribute: dependency groupId POM
阿新 • • 發佈:2021-03-26
構建maven的時候,gradle的指令碼是這樣的
uploadArchives { repositories { mavenDeployer { repository(url: 倉庫地址) { authentication(userName: 倉庫使用者名稱, password: 倉庫密碼) } pom.project { groupId "" artifactId "" version '' } } } }
其中groupId,artifactId,version其實就是我們在使用maven依賴的時候寫的
implementation 'com.cvilia.open:open:1.1',類比過來就是implementation 'groupId:artifactId:version'
最終生成maven後的pom中出現如下
一開始以為是這個groupId為*導致在解析pom檔案的時候無法解析出來,後來證實發現*表示移除所有依賴
最後發現pom檔案中的aar依賴沒有groupId才導致aar依賴失敗。於是更改aar的依賴方式,我們對aar的常用依賴方式如下
implementation(name: 'alipay', ext: 'aar')
這種情況下載構建的時候讀取不到alipay的groupid,於是更改為以下方式
implementation('包名(groupId):[email protected]')
雖然解決了問題,但是這種方式是遠端依賴,並不是本地的aar依賴
所以最終的方案是在build.gradle中新增‘*.aar’如下所示
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
最終會將aar的groupid打進maven庫中
至此問題得到結局。
這個問題用了差不多一天的時間去解決,可以說是從一開始方向就錯了,一直在追究移除所有依賴的問題,其實官方是支援這麼寫的,而忽略了問題本身是缺少groupid,其實整個pom檔案的依賴項並不多,全域性搜一下就可以找到原因。所有以後排查問題一定要著重注意問題本身,快速找出問題的關鍵詞。