如何从最终工件(jar)中排除依赖项,但需要在gradle中编译和运行单元测试时使用

如何从最终工件(jar)中排除依赖项,但需要在gradle中编译和运行单元测试时使用,gradle,Gradle,在编译或运行该项目的单元测试时,我需要使用一个依赖项,但我不想将它包含在我的最终工件jar文件中,因为在使用java xx.jar命令运行它时,我将在类路径中指定此依赖项。下面是我在build.gradle中的当前配置 配置{ 提供的运行时 runtime.exclude模块:'dependencyA' } 依赖关系{ 编译“groupA:dependencyA:versionX” } 上述设置可以确保在编译项目时dependencyA起作用,还可以从最终jar文件中排除dependencyA。

在编译或运行该项目的单元测试时,我需要使用一个依赖项,但我不想将它包含在我的最终工件jar文件中,因为在使用java xx.jar命令运行它时,我将在类路径中指定此依赖项。下面是我在build.gradle中的当前配置

配置{ 提供的运行时 runtime.exclude模块:'dependencyA' }

依赖关系{ 编译“groupA:dependencyA:versionX” }

上述设置可以确保在编译项目时dependencyA起作用,还可以从最终jar文件中排除dependencyA。但当运行单元测试时,它找不到dependencyA,因为它被排除在外。
如何在单元测试运行中包含dependencyA,同时从最终jar文件中排除dependencyA?

更简单的解决方案是执行以下操作:

dependencies {
    // Makes the dependency appear _only_ on compileClasspath
    compileOnly('groupA:dependencyA:versionX')
    // Makes the dependency appear _only_ on testRuntimeClasspath
    testRuntimeOnly('groupA:dependencyA:versionX')
}
有关通过java插件提供的不同配置的说明,请参阅