Gradle dockerCompose插件为所有任务保留最后一个配置
在我的SpringBoot项目中,我需要为测试和本地应用程序保留两个dockerCompose插件配置 例如:Gradle dockerCompose插件为所有任务保留最后一个配置,gradle,groovy,configuration,Gradle,Groovy,Configuration,在我的SpringBoot项目中,我需要为测试和本地应用程序保留两个dockerCompose插件配置 例如: dockerCompose { useComposeFiles = ['docker-compose/postgresql-test.yml'] isRequiredBy(project.tasks.localPostgreSqlTest) removeContainers = true stopContainers = true } 及 按照此结构,
dockerCompose {
useComposeFiles = ['docker-compose/postgresql-test.yml']
isRequiredBy(project.tasks.localPostgreSqlTest)
removeContainers = true
stopContainers = true
}
及
按照此结构,我配置了任务localPostgreSqlTest:
另一个是localPostgreSql
以不同的方式考虑这种配置,一切都按预期进行
同时将所有配置添加到build.gradle行为更改:我的两个任务中都使用了lastly met dockerCompose配置
我确信问题在于我的gradle配置和groovy知识
所以问题是
如何修改我的任务声明localPostgreSqlTest和localPostgreSql,使它们各自具有自己的插件配置?假设您正在使用
插件:
dockerCompose是一种全局配置,应该在
顶级的。所以,一旦你在不同的块中设置相同的东西,
它仍然只写入同一个位置,因此最后一个值获胜
要使设置正常工作,您必须使用:
例如,在顶层:
dockerCompose {
dev {
useComposeFiles = ['docker-compose/postgresql-local.yml']
isRequiredBy(project.tasks.localPostgreSql)
removeContainers = false
stopContainers = false
}
test {
useComposeFiles = ['docker-compose/postgresql-test.yml']
isRequiredBy(project.tasks.localPostgreSqlTest)
removeContainers = true
stopContainers = true
}
}
如果我使用的是dependsOntasks.test在doFirst或doLast内部测试,我就无法在composeUp之后和composeDown之前启动测试。在你发表文章之前,我尝试过类似的技巧,我想我错过了一些东西,只是重复了其他尝试。常规composeUp不再配置,因此应该会很快失败-现在有一些以dev为前缀的任务,例如devComposeUp等,但没有分享你的实际问题,这里并没有太多建议。我写了关于通话顺序的文章。重点是在测试之后编写CTart,但我需要先编写。您的提案的顺序是:1。测试,2个组件,3个第一块,4个第一块。我使用额外的任务检测到了它,因为在第一步测试中我失败了,因为测试需要启动docker。镇静。请让我知道,如果你需要从我这边不同的细节。请随时添加另一个问题,在那里你显示的问题。我想这是如何回答你最初的问题,以及你是如何遇到一些不同的问题的。
task localPostgreSqlTest {
dockerCompose {
useComposeFiles = ['docker-compose/postgresql-test.yml']
isRequiredBy(project.tasks.localPostgreSqlTest)
removeContainers = true
stopContainers = true
}
dependsOn(tasks.test)
}
task localPostgreSql {
dockerCompose {
useComposeFiles = ['docker-compose/postgresql-local.yml']
isRequiredBy(project.tasks.localPostgreSql)
removeContainers = false
stopContainers = false
}
tasks.bootRun.dependsOn(it)
}
dockerCompose {
dev {
useComposeFiles = ['docker-compose/postgresql-local.yml']
isRequiredBy(project.tasks.localPostgreSql)
removeContainers = false
stopContainers = false
}
test {
useComposeFiles = ['docker-compose/postgresql-test.yml']
isRequiredBy(project.tasks.localPostgreSqlTest)
removeContainers = true
stopContainers = true
}
}