【问题标题】:why android gradle maven publish artifact bundleRelease not found为什么找不到android gradle maven发布工件bundleRelease
【发布时间】:2018-07-20 01:16:14
【问题描述】:

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

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

【问题讨论】:

    标签: gradle maven-publish


    【解决方案1】:

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

    所以解决方案是使用:bundleReleaseAar 而不是bundleRelease

    注意:任务名称中的“发布”是 buildType/flavor 组合,因此您的设置可能会有所不同。


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

    【讨论】:

    • 这也适用于新稳定的 Android Gradle Plugin 3.2.0。
    • 现在com.android.tools.build:gradle:3.4.0 artifact bundleReleaseAar 也出现同样的问题,用什么来代替bundleReleaseAar
    • @NickUnuchek 看来我们必须将整个 publishing {...} 块包装到 project.afterEvaluate { publishing { ... } } 中,然后才能正常工作。
    【解决方案2】:

    所以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>'
                }
            }
        }
    }
    

    【讨论】:

    • 感谢您通过一个完整的示例来澄清这一点!它真的拯救了我的一天!
    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2020-08-09
    • 2016-05-07
    • 2021-07-05
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多