Java 我可以使用gradle检索测试数据相关性吗?
假设我在一个基于Java的Gradle项目中有一个测试用例,该项目需要一个映像才能完成,并且映像比较大(~100MB)。例如,测试可能需要从图像中读取像素数据,以便确认某些CV算法正在一致地完成。只需将此数据添加到项目中的一个目录(如src/test/data)中,并将数据与其他所有内容一起签入版本控制,这将非常简单,但这会使存储库非常大,并且需要将映像的副本签入希望使用它的每个其他项目中 是否有一种方法可以打包此映像,以便将其添加到网络存储库(如Nexus或Artifactory)中,然后使用Gradle依赖机制将其拉入到项目中?如果是这样,我将如何从测试用例中引用图像 编辑:这是我最终采用的解决方案Java 我可以使用gradle检索测试数据相关性吗?,java,gradle,nexus,artifactory,Java,Gradle,Nexus,Artifactory,假设我在一个基于Java的Gradle项目中有一个测试用例,该项目需要一个映像才能完成,并且映像比较大(~100MB)。例如,测试可能需要从图像中读取像素数据,以便确认某些CV算法正在一致地完成。只需将此数据添加到项目中的一个目录(如src/test/data)中,并将数据与其他所有内容一起签入版本控制,这将非常简单,但这会使存储库非常大,并且需要将映像的副本签入希望使用它的每个其他项目中 是否有一种方法可以打包此映像,以便将其添加到网络存储库(如Nexus或Artifactory)中,然后使用
configurations {
testData
}
dependencies {
testData group: 'com.company', name: 'testData', version: '1.0', ext: 'zip'
}
task unzip(type: Copy) {
def outputDir = file("${buildDir}/unpacked/dist")
from {zipTree(configurations.testData.singleFile)}
into outputDir
}
test {
dependsOn unzip
systemProperties 'testDataDir': file("${buildDir}/unpacked/dist")
}
这将添加一个保存测试数据的新配置,以及一个解压数据的新任务。请注意,zipTree(configurations.testData.singleFile)
周围的括号很重要,因为它们创建了一个闭包,以确保仅在构建时解析路径。没有它们,测试数据将在构建脚本运行时下载,而不仅仅是在测试任务运行时下载。其中的最后一个块将测试任务配置为依赖于解压任务,然后将文件的位置作为系统属性传递到测试中。您可以使用System.getProperty(“testDataDir”)
读取测试文件中的属性。因为解压任务被设置为测试任务的依赖项,所以只有在执行测试任务时才会下载和解压文件。这可以保持正常的构建速度是的,有很多方法可以做到这一点。例如,您可以将映像发布到Nexus,并使用Gradle的常规依赖关系管理(例如,使用仅工件符号
“some.group:someArtifact:1)解析它。0@img“
)。然后,您可以配置test
任务,通过系统属性将映像的本地文件路径传递给测试。或者,您可以将映像放在测试运行时类路径上,并通过,比如,ClassLoader\getResource
访问它。是的,有一些方法可以实现这一点。例如,您可以将映像发布到Nexus,并使用Gradle的常规依赖关系管理(例如,使用仅工件符号“some.group:someArtifact:1)解析它。0@img“
)。然后,您可以配置test
任务,通过系统属性将映像的本地文件路径传递给测试。或者,您可以将映像放在测试运行时类路径上,并通过,例如,ClassLoader#getResource
访问它,正如Peter所说,将其添加为配置依赖项
image "some.group:someArtifact:1.0@img"
在gradle脚本中,将其引用为
configuration.image.singleFile.getPath()
正如Peter所说,将其添加为配置依赖项
image "some.group:someArtifact:1.0@img"
在gradle脚本中,将其引用为
configuration.image.singleFile.getPath()