gpt4 book ai didi

gradle - Gradle,过滤资源的一种方法进行测试,而打包工件时的另一种方法

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

我有一个gradle项目,其中包含一些数据库迁移脚本。

迁移文件中有一个变量,可以使用resource filtering替换。这可以正常工作,并且可以像这样完成:

processResources {
filter ReplaceTokens, tokens: [
"index.refresh.period": project.property("index.refresh.period")
]
}

现在,我编写了一个单元测试,该测试将启动嵌入式数据库并应用相同的迁移脚本。但是,对于测试,我需要替换另一个值。
我该怎么做?

我尝试了许多不同的方法,但似乎没有任何效果。我应该提到我是Gradle的新手,所以这是一种反复试验的方法。

尝试1:
test {
project.ext.setProperty('index.refresh.period', '1')
processResources
}

尝试2:
compileTestJava {
project.ext.setProperty('index.refresh.period', '1')
processResources
}

最佳答案

我最终将迁移脚本复制粘贴到输出测试资源文件夹中,并在此复制操作中进行了过滤。

请注意,在测试期间,测试文件夹中的资源优先。这意味着,由于以下更改,使用这些文件(在我的使用案例中是数据库迁移工具)的逻辑不需要任何特定于测试的配置-测试资源文件夹中的db迁移脚本仅具有优先权。

processResources {
filter ReplaceTokens, tokens: [
"index.refresh.period": project.property("index.refresh.period")
]
}

task copyFiles(type: Copy) {
println "Copying db migration scrips to test resources (in order to set shortest possible index refresh period)"
from 'src/main/resources/db/migration'
into "${buildDir}/resources/test/db/migration"
filter ReplaceTokens, tokens: [
"index.refresh.period": '1'
]
}

processTestResources {
dependsOn copyFiles
}

在我的 gradle.properties 文件中,将项目属性' index.refresh.period'定义为:
index.refresh.period=60

关于gradle - Gradle,过滤资源的一种方法进行测试,而打包工件时的另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53502019/

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