如何在Java-catalog build.gradle文件中排除依赖项

5

Java目录引用snakeyaml如下

Java目录build.gradle声明 library('snakeyaml', 'org.yaml', 'snakeyaml').version('2.0')

编译会抛出以下错误,如何在Java目录本身执行排除以避免加载android.jar

* What went wrong:
Execution failed for task ':compileTestJava'.
> Could not resolve all files for configuration ':testCompileClasspath'.
   > Could not find snakeyaml-2.0-android.jar (org.yaml:snakeyaml:2.0).
     Searched in the following locations:
         https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/2.0/snakeyaml-2.0-android.jar

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

很难确定是什么在尝试拉取snakeyaml-2.0-android.jar - 下面提供了两个答案,可能会回答您的问题,但如果不提供build.gradle文件中的代码片段或更多上下文,那么这只能是社区的猜测。 - djmonki
3个回答

1

你不能在版本目录中定义任何排除项。

版本目录就像其名称所示,只是一份艺术品及其版本的目录,您可以从中选择。

使用它们在效果上等同于字面上声明依赖项而没有版本目录的好处。

版本目录中的声明可用于许多地方。

而排除、属性、工件类型等内容不在版本目录的范围之内,而是在您使用它的范围之内。

也许您还想看看平台。当要求是否使用平台或版本目录时,答案通常是两者都要使用。


0
作为一个产品,snakeyaml-2.0-android.jar并不存在,但是存在snakeyaml-2.0.jar
从测试依赖中排除掉试图下载snakeyaml-2.0-android.jar构件的部分(下面的示例中使用了javafaker来说明),并请求存在的那个构件。
dependencies {
    testImplementation("com.github.javafaker:javafaker:1.0.2") {
        exclude(group = "org.yaml", module = "snakeyaml")
    }
    testImplementation("org.yaml:snakeyaml:2.0")
}

请参考@Jagroop的回答,以应用最相关的解决方案。 - djmonki
2
问题是如何在版本目录中进行排除,所以答案是不可能的。;-) - Vampire

0
首先打开Java项目的build.gradle文件,然后在dependencies中找到声明snakeyaml的位置。
之后,您可以像这样排除组:
dependencies {
    // ... other dependencies
    compile('org.yaml:snakeyaml:2.0') {
        exclude group: 'org.yaml', module: 'snakeyaml-android'
    }
    // ... other dependencies
}

2
问题是如何在版本目录中进行排除,所以答案是不可能的。;-) - Vampire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接