1. 程式人生 > 其它 >gradle構建maven提示Missing required attribute: dependency groupId POM

gradle構建maven提示Missing required attribute: dependency groupId POM

構建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檔案的依賴項並不多,全域性搜一下就可以找到原因。所有以後排查問題一定要著重注意問題本身,快速找出問題的關鍵詞。