why android gradle maven publish artifact bundleRelease not found

前端 未结 2 798
逝去的感伤
逝去的感伤 2020-12-10 04:47

When i sync project, android studio warn could not get unknown property \'bundleRelease\' for object of type org.gradle.api.publish.maven.internal.publication.DefaultM

相关标签:
2条回答
  • 2020-12-10 05:36

    So the answer from Artem Zunnatullin is correct. Just one addition, the project.afterEvaluate{//block} is necessary to make it work. This information can be overlooked very easily.

    Complete example:

    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>'
                }
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-10 05:38

    Android Gradle Plugin 3.3.x (at least -alpha releases at the time of writing this answer) has breaking change, task bundleRelease was renamed to bundleReleaseAar

    So the solution is to use: bundleReleaseAar instead of bundleRelease.

    Note: "release" in the task name is buildType/flavor combination, thus it might be different in your setup.


    Generic answer: bundleRelease is a task, to find its new name you can run ./gradlew tasks --all

    0 讨论(0)
提交回复
热议问题