Android/Gradle - 仅包含传递依赖项

标签 android gradle dependencies

在 Android/Gradle 项目中是否可以仅包含特定模块的传递依赖项,而不包含该模块本身?

为了便于说明,假设有一个模块 X,它对 ABC 具有传递依赖关系。我希望我的项目在类路径上有 ABC,但没有 X 。理想情况下,我想要做的是利用 X 已经知道我想要什么依赖项的事实,这样我就不必显式声明对 A 的依赖项我的项目中的 BC

假设,我想要的大约是这样的:

implementation(group: 'com.x', name: 'Xlib', version: '1.0', ...){
    transitive true                         //include 'A', 'B', and 'C'
    exclude group: 'com.x', module: 'Xlib'  //exclude 'X'
}

...如“指定 X 作为依赖项,获取其传递依赖项,并忽略 X 中的所有顶级包”。

有没有办法做到这一点,或者是否有必要显式声明 ABC 作为依赖项?

最佳答案

我已经做到了here在我的 java-monkey-patch 插件中,我想包含 target Artifact 的所有传递依赖项,但不包含 target Artifact 本身

dependencies {
    monkeyPatchTransitive target
    monkeyPatchNonTransitive target
    compileOnly(target) {
        transitive = false
    }
}

Set<Map>  depSet = [] as Set
ResolvedDependency topDependency = configurations.monkeyPatchTransitive.resolvedConfiguration.firstLevelModuleDependencies.iterator().next()
topDependency.children.each { ResolvedDependency child ->
    child.allModuleArtifacts.each { ResolvedArtifact artifact ->
        ModuleVersionIdentifier mvi = artifact.moduleVersion.id
        def dependency = [
                group  : mvi.group,
                name   : mvi.name,
                version: mvi.version,
                ext    : artifact.extension
        ]
        if (artifact.classifier) {
            dependency['classifier'] = artifact.classifier
        }
        depSet << dependency
    }
}

depSet.each { Map dependency ->
    logger.info "Adding $dependency"
    dependencies.compile(dependency) {
        transitive = false
    }
}

关于Android/Gradle - 仅包含传递依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666038/

相关文章:

php - Symfony - 依赖项未注入(inject)我的实体监听器类

Android HLS - 源代码在哪里?

Android ChildFragmentManager().findFragmentById() 始终为 null

gradle - 如何在junit 5 gradle测试报告中捕获stdout/stderr?

android - 在android studio中删除一个依赖项的未使用文件

java - 您如何以编程方式访问已解决的实现依赖项?

android - 是否可以访问 ViewPager 正在查看的当前 fragment ?

android - 在预定时间以编程方式发送短信

gradle - 如何在Kubernetes CI管道中使用Gradle守护程序?

java - 在 Gradle 中调试 Github Packages 存储库连接