为什么android gradle maven发布工件bundleRelease not found

neu*_*ima 9 gradle maven-publish

当我同步项目时,android studio警告 could not get unknown property 'bundleRelease' for object of type org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.

我添加project.afterEvaluate{//block},但它不起作用.我该怎么做才能设置artifact

Art*_*lin 30

Android Gradle Plugin 3.3.x(在撰写此答案时至少发布了-alpha版本)发生了重大变化,任务bundleRelease被重命名为bundleReleaseAar

因此解决方案是使用:bundleReleaseAar而不是bundleRelease.

注意:任务名称中的"release"是buildType/flavor组合,因此在您的设置中可能会有所不同.


通用答案:bundleRelease是一个任务,找到你可以运行的新名称./gradlew tasks --all

  • 这也适用于新稳定的Android Gradle Plugin 3.2.0. (2认同)
  • @NickUnuchek 似乎我们必须将整个 ```publishing {...}``` 块包装到 ```project.afterEvaluate { publishing { ... } }```,然后它就可以工作了。 (2认同)

小智 18

因此,Artem Zunnatullin的答案是正确的。只需添加一项,project.afterEvaluate{//block}它就可以正常工作。此信息很容易被忽略。

完整的例子:

project.afterEvaluate {
    publishing {
        publications {
            mavenDebugAAR(MavenPublication) {
                artifact bundleDebugAar

                pom.withXml {
                    def dependenciesNode = asNode().appendNode('dependencies')
                    configurations.api.allDependencies.each { ModuleDependency dp ->
                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', dp.group)
                        dependencyNode.appendNode('artifactId', dp.name)
                        dependencyNode.appendNode('version', dp.version)

                        if (dp.excludeRules.size() > 0) {
                            def exclusions = dependencyNode.appendNode('exclusions')
                            dp.excludeRules.each { ExcludeRule ex ->
                                def exclusion = exclusions.appendNode('exclusion')
                                exclusion.appendNode('groupId', ex.group)
                                exclusion.appendNode('artifactId', ex.module)
                            }
                        }
                    }
                }
            }

            mavenReleaseAAR(MavenPublication) {
                artifact bundleReleaseAar

                pom.withXml {
                    def dependenciesNode = asNode().appendNode('dependencies')
                    configurations.api.allDependencies.each { ModuleDependency dp ->
                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', dp.group)
                        dependencyNode.appendNode('artifactId', dp.name)
                        dependencyNode.appendNode('version', dp.version)

                        if (dp.excludeRules.size() > 0) {
                            def exclusions = dependencyNode.appendNode('exclusions')
                            dp.excludeRules.each { ExcludeRule ex ->
                                def exclusion = exclusions.appendNode('exclusion')
                                exclusion.appendNode('groupId', ex.group)
                                exclusion.appendNode('artifactId', ex.module)
                            }
                        }
                    }
                }
            }
        }

        repositories {

            maven {
                name 'nexusSnapshot'
                credentials {
                    username '<User with deployment rights>'
                    password '<User password>'
                }
                url '<URL to nexus>'
            }

            maven {
                name 'nexusRelease'
                credentials {
                    username '<User with deployment rights>'
                    password '<User password>'
                }
                url '<URL to nexus>'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)