web-dev-qa-db-ja.com

なぜAndroid gradle maven publish artifact bundleRelease not found

プロジェクトを同期すると、Android studio warn could not get unknown property 'bundleRelease' for object of type org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.

私は追加します project.afterEvaluate{//block}、しかしそれは動作しません。 artifactを設定するにはどうすればよいですか

9
neuyuandaima

Android Gradleプラグイン3.3.x(この回答を書いている時点で少なくとも-alphaリリース)には重大な変更があり、タスクbundleReleasebundleReleaseAarに名前が変更されました。

したがって、解決策はbundleReleaseAarの代わりにbundleReleaseを使用することです。

注:タスク名の「リリース」はbuildType/flavorの組み合わせであるため、セットアップが異なる場合があります。


一般的な答え:bundleReleaseはタスクです。新しい名前を見つけるには、./gradlew tasks --all

30

Artem Zunnatullin からの答えは正しいです。 1つ追加するだけで、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>'
            }
        }
    }
}
18
Satarus