为啥找不到android gradle maven发布工件bundleRelease

Posted

技术标签:

【中文标题】为啥找不到android gradle maven发布工件bundleRelease【英文标题】: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

【问题讨论】:

【参考方案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>'
            
        
    

【讨论】:

感谢您通过一个完整的示例来澄清这一点!它真的拯救了我的一天!

以上是关于为啥找不到android gradle maven发布工件bundleRelease的主要内容,如果未能解决你的问题,请参考以下文章

新建项目找不到android studio:appcompat v7:27.+包。

加载maven时报错求助

Gradle 构建工具找不到 play-services-tasks.aar?为啥?

android找不到jar包中远程依赖的类

在flutter中找不到参数android()的方法

Gradle 错误:找不到 com.android.tools.build:gradle:6.6.1