gpt4 book ai didi

Gradle::runtime.exclude group: 'org.apache.hadoop' 影响测试范围?

转载 作者:行者123 更新时间:2023-12-03 03:49:32 25 4
gpt4 key购买 nike

我的 build.gradle 中有以下内容:

configurations {
runtime.exclude group: 'org.apache.spark'
runtime.exclude group: 'org.apache.hadoop'
}

由于某种原因,这也将所有 Hadoop/Spark 代码从测试类路径中排除。如果我注释掉这个配置 - 测试通过正常,否则我得到各种 java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/MiniDFSCluster$Builder问题。

我试着用这个:
test {
classpath += configurations.compile

}

没运气。

我在这里想念什么?

最佳答案

在 gradle 范围内,test继承自 runtime .您的测试代码排除了 minicluster 依赖项,因为运行时排除了它。

有关 java 插件的范围继承树,请参见此图:
gradle configuration inheritance

您可能希望将 spark 依赖项添加到 compileOnly 中,而不是将全局排除添加到运行时配置中。自 gradle 2.12 起可用的作用域依赖项。

configurations {
compileOnly 'org.apache.spark:spark:2.11'
test 'org.apache.hadoop:hadoop-minicluster:2.7.2'
}

gradle manual 中提供了有关 gradle 作用域的更多信息。 :

或者,您可以添加另一个从运行时继承的配置,并向其中添加排除项,然后将其用作 shadowJar 的基础。如果您想选择性地构建一个包含或不包含 spark 依赖项的 jar,这可能会很有帮助。您的测试将使用没有排除的配置,但您打包的 jar 将不包含 spark 依赖项。
configurations {
sparkConfiguration {
extendsFrom runtime
exclude group: 'org.apache.hadoop'
exclude group: 'org.apache.spark'
}
}

task sparkExcludedJar(type: ShadowJar) {
group = "Shadow"
configurations = [project.configurations.sparkConfiguration]
classifier = 'sparkExcluded'
}

关于Gradle::runtime.exclude group: 'org.apache.hadoop' 影响测试范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com