gpt4 book ai didi

gradle - 使用gradle以编程方式添加资源文件夹以测试编译/运行时类路径

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

我们有一个用于60多个组件的主构建脚本。各个组件没有build.gradle文件。我想做的是以编程方式(在build.gradle主目录中)将资源文件夹添加到某些项目。该资源文件夹包含一个文件,该文件必须在运行单元测试时位于类路径中。我试图像这样在subprojects块中添加它:

subprojects { proj ->
...
// this is the folder I need in the test task classpath
def resdir = sprintf("%s\\resources", project(':Common').projectDir)
sourceSets {
test {
java {
srcDir 'test'
}
resources {
srcDirs = [resdir]
}
}
}
}
...
if(proj.name == "APROJECT"){
proj.tasks['test'].getClasspath().each {
logger.info "COMPILE CLASSPATH: {}", it
}
}
}

但是,如果我查询 test任务的类路径(请参见上文),则在类路径中看不到该文件夹​​。另外,当然,由于文件夹不在类路径中,因此测试失败。

如果我将 sourceSet更新放在component文件夹中的 build.gradle中,它将按预期工作。

难道我做错了什么?如何将该文件夹放入类路径进行测试?

最佳答案

我无法通过动态更新sourceSet来使其正常工作,但是,我可以通过向testCompile依赖项添加必要的资源路径来使其正常工作。有关将类文件夹添加到依赖项的信息,请参见this

更新:这仍然不是理想的解决方案,因为“解决方案”仅将类文件夹添加到编译路径,而不将其视为资源(例如,将其复制到运行时类文件夹)。

更新#2:它实际上按预期方式工作。事实证明,不同的测试所引用的资源路径略有不同。如上所述,动态添加所有资源路径都可以!

关于gradle - 使用gradle以编程方式添加资源文件夹以测试编译/运行时类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60876480/

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