我在 build.gradle 中使用以下内容生成带有 maven-publish 插件的 pom:
configurations.implementation.allDependencies.each {
if (it.group != null && (it.name != null || "unspecified" == it.name) && it.version != null) {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
使用依赖项时效果很好,如下所示:
implementation 'com.google.firebase:firebase-config:19.2.0'
implementation 'com.google.firebase:firebase-messaging:20.3.0'
implementation 'com.google.firebase:firebase-analytics:17.6.0'
implementation 'com.google.firebase:firebase-crashlytics:17.2.2'
但在迁移到 BOM 后不再存在:
implementation platform('com.google.firebase:firebase-bom:26.0.0')
implementation 'com.google.firebase:firebase-config'
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-crashlytics'
发布时不获取版本(因此不包括依赖项):
> Task :vendor:generatePomFileForPublication
DefaultExternalModuleDependency{group='com.google.firebase', name='firebase-bom', version='26.0.0', configuration='default'}
DefaultExternalModuleDependency{group='com.google.firebase', name='firebase-config', version='null', configuration='default'}
DefaultExternalModuleDependency{group='com.google.firebase', name='firebase-messaging', version='null', configuration='default'}
DefaultExternalModuleDependency{group='com.google.firebase', name='firebase-analytics', version='null', configuration='default'}
DefaultExternalModuleDependency{group='com.google.firebase', name='firebase-crashlytics', version='null', configuration='default'}
有人知道如何使用 gradle DSL 从 BOM 中读取版本吗?或者如何生成 pom.xml 的 dependencyManagement 部分以反映 BOM?