我正在尝试创建两个任务来激活Gradle中的BootRun
任务。我从其他模块调用这些任务。)这是一个SpringBootApp,它接受命令行参数并根据作为输入的参数进行操作。除此之外,如果有帮助,它是代码生成器/表生成器。
task generateClass(dependsOn:":tools:codegen:clean") {
bootRun {
args = ["--class"]
}
}
task generateMetadata(dependsOn:":tools:codegen:clean") {
bootRun {
args = []
args = ["--metadata"]
}
}
generateClass.finalizedBy generateClass:bootRun
generateMetadata.finalizedBy generateMetadata:bootRun
上述问题是,每当我从GenerateClass
或GenerateMetadata
任务调用 BootRun 时,它都会调用不带参数的单个BootRun
我已经为任务做好了。
Should Work:
GenerateClass --> ClassArgs --> Run
GenerateMetadata --> MetadataArgs --> Run
But Works as:
Args = which ever task from above runs first, their arguments are set.
So sometimes it is
GenerateClass --> MetadataArgs --> Run
GenerateMetadata --> MetadataArgs --> Run
or
GenerateClass --> ClassArgs --> Run
GenerateMetadata --> ClassArgs --> Run
因此,我的解决方案是使用不同的参数创建自定义bootRun任务,或者通过运行任务有效地传递CLI参数。
注意:是的,SpringBoot CLI解析正确,因为我已经对其进行了测试。另外,我从其他模块调用这些任务。
答案 0 :(得分:0)
阅读documentation链接的JB Nizet之后!我创建了这些BootRun任务,这些任务接受commandLineArguments并还使用spring-profiles!希望这是有用的:)
task generateClass(type: org.springframework.boot.gradle.tasks.run.BootRun, dependsOn: 'build') {
doFirst() {
main = 'com.etcbase.uyap.generator.GeneratorApplication'
classpath = sourceSets.main.runtimeClasspath
args '--class'
systemProperty 'spring.profiles.active', 'dev'
}
}
task generateMetadata(type: org.springframework.boot.gradle.tasks.run.BootRun, dependsOn: 'build') {
doFirst() {
main = 'com.etcbase.uyap.generator.GeneratorApplication'
args '--metadata'
classpath = sourceSets.main.runtimeClasspath
systemProperty 'spring.profiles.active', 'test'
}
}