使用 Gradle 7.2 的 Maven api pulish

Maven api pulish with Gradle 7.2

提问人:hannes ach 提问时间:9/9/2021 更新时间:4/22/2022 访问量:133

问:

我想在 jitpack.io 中发布 Android,但缺少依赖项,这就是我使用 Gradle 7.2 的原因api

project.afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                pom {
                    configurations.api.getDependencies().each { dep -> addDependency(dep, "compile") }
                    configurations.implementation.getDependencies().each { dep -> addDependency(dep, "runtime") }
                }
            }
        }
    }
}

这适用于 Gradle 6.x,但在 Gradle 7.x 中则失败

configurations.api.getDependencies().each { dep -> addDependency(dep, "compile") }

找不到 org.gradle.api.publish.maven.internal.publication.DefaultMavenPom 类型的对象上的参数 [DefaultProjectDependency{dependencyProject='project ':libs:gvr'', configuration='default'}] 的方法 addDependency()。

有人知道如何解决它吗?

Android Maven android-gradle-plugin 发布

评论


答:

0赞 EpicPandaForce 4/22/2022 #1

使用此代码片段

       release(MavenPublication) {
            // Applies the component for the release build variant.
            from components.release
            artifact(sourcesJar)

            // You can then customize attributes of the publication as shown below.
            groupId = '[group]'
            artifactId = '[artifact]'
            version = '[version]'

            pom.withXml {
                def dependenciesNode = (asNode().get("dependencies") as groovy.util.NodeList).get(0) as groovy.util.Node
                def configurationNames = ["implementation", "api"]

                configurationNames.forEach { configurationName ->
                    configurations[configurationName].allDependencies.forEach {
                        if (it.group != null && it.version != "unspecified") {
                            def dependencyNode = dependenciesNode.appendNode("dependency")
                            dependencyNode.appendNode("groupId", it.group)
                            dependencyNode.appendNode("artifactId", it.name)
                            dependencyNode.appendNode("version", it.version)
                        }
                    }
                }
            }
        }
    }
}