为啥找不到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.+包。