构建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):aarName@aar')

虽然解决了问题,但是这种方式是远程依赖,并不是本地的aar依赖

所以最终的方案是在build.gradle中新增‘*.aar’如下所示

implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])

 

最终会将aar的groupid打进maven库中

至此问题得到结局。

这个问题用了差不多一天的时间去解决,可以说是从一开始方向就错了,一直在追究移除所有依赖的问题,其实官方是支持这么写的,而忽略了问题本身是缺少groupid,其实整个pom文件的依赖项并不多,全局搜一下就可以找到原因。所有以后排查问题一定要着重注意问题本身,快速找出问题的关键词。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐