首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle插件- getArtifacts()导致“无法解析配置的所有依赖关系...”

Gradle插件- getArtifacts()导致“无法解析配置的所有依赖关系...”
EN

Stack Overflow用户
提问于 2018-07-08 20:02:49
回答 0查看 1.1K关注 0票数 1

我正在尝试编写一个gradle任务(下面的代码),它在一个多项目构建中聚合来自ResolvedArtifact对象的信息。然而,当我使用Gradle4.8.1在一个示例安卓项目(https://github.com/gmetal/sample-dependency-check-app)上运行任务时,我得到了以下错误:

代码语言:javascript
复制
07:29 $ gradle clean resolveArtifacts
> Task :app:resolveArtifacts FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:resolveArtifacts'.
> Could not resolve all dependencies for configuration ':app:debugAndroidTestCompileClasspath'.
   > More than one variant of project :mylibrary matches the consumer attributes:
       - Configuration ':mylibrary:debugApiElements' variant android-aidl:
           - Found artifactType 'android-aidl' but wasn't required.
           - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
           - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
           - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
       - Configuration ':mylibrary:debugApiElements' variant android-classes:
           - Found artifactType 'android-classes' but wasn't required.
           - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
           - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
           - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
       - Configuration ':mylibrary:debugApiElements' variant android-manifest:
           - Found artifactType 'android-manifest' but wasn't required.
           - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
           - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
           - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
       - Configuration ':mylibrary:debugApiElements' variant android-renderscript:
           - Found artifactType 'android-renderscript' but wasn't required.
           - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
           - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
           - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
       - Configuration ':mylibrary:debugApiElements' variant jar:
           - Found artifactType 'jar' but wasn't required.
           - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
           - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
           - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.

resolveArtifacts任务的代码如下:

代码语言:javascript
复制
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ResolvedArtifact
import org.gradle.api.tasks.TaskAction

import static org.gradle.api.specs.Specs.SATISFIES_ALL

class ResolveArtifacts extends DefaultTask {
    ResolveArtifacts() {
        group = 'Sample Task'
        description = 'Attempts to resolve artifacts.'
    }

    @TaskAction
    analyze() {
        project.allprojects.collectMany { Project currentProject ->
            currentProject.configurations.findAll {
                canBeResolved(it)
            }.each { Configuration configuration ->
                configuration.resolvedConfiguration.lenientConfiguration.getArtifacts(SATISFIES_ALL).each { ResolvedArtifact artifact ->
                    logger.lifecycle("------ resolved ${artifact}")
                }
            }
        }
    }

    def canBeResolved(configuration) {
        configuration.metaClass.respondsTo(configuration, "isCanBeResolved") ?
                configuration.isCanBeResolved() : true
    }
}

对于如何解决上述错误,有什么建议吗?最初的问题发布在github上的dependency-check-gradle上。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51231805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档