gradle构建maven提示Missing required attribute: dependency groupId POM
构建maven的时候,gradle的脚本是这样的uploadArchives {repositories {mavenDeployer {repository(url: 仓库地址) {authentication(userName: 仓库用户名, password: 仓库密码)}pom.project {groupId ""
构建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文件的依赖项并不多,全局搜一下就可以找到原因。所有以后排查问题一定要着重注意问题本身,快速找出问题的关键词。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)