我正在尝试按照Delegate command line system properties to spring-boot-gradle-plugin runApp task #592
从命令行属性加载-Dspring.profiles.active我的gradle构建文件的一部分是
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'jacoco'
apply plugin: 'docker'
bootRun {
execSpec {
systemProperty 'com.example.foo', 'bar'
}
}
我收到错误消息
Could not find method execSpec() for arguments [build_48hmmm554of8gjd2p2pou6vn0$_run_closure5$_closure17@30ae2373] on task ':bootRun' of type org.springframework.boot.gradle.run.BootRunTask.
如何加载execSpec()?
答案 0 :(得分:3)
从Spring Boot 2.0.0开始,execSpec
应该在bootRun
中运行。但是我今天遇到了同样的问题。奇怪的是,它在某个时刻起作用,并在我改变项目名称后几秒钟停止工作。
我意识到这个更改触发了Gradle刷新,不久之后我的gradle缓存中有两个不同版本的spring-boot-gradle-plugin-2.0.0.BUILD-SNAPSHOT.jar
。 On是57 kb,另一个是58 kb。我解压缩了罐子,查看了内容,发现差异恰好是类org.springframework.boot.gradle.tasks.run.BootRun
,一个是3 kb,另一个是7 kb。所以我猜57 kb版本缺少execSpec
。
然后我直接检查了Spring存储库并意识到快照文件来自今天(2017年11月23日)。因此,今天出现了一个新的快照,execSpec
在该版本中消失了。由于您的问题来自十月,我们可能不使用相同的文件,但您可能遇到了同样的问题。我真的不明白为什么execSpec
似乎要来去,但我想这是使用SNAPSHOT版本的代价。
因此,除了等到第一次稳定构建或下一次包含execSpec
的快照或提供另一种设置系统变量的可能性之外,我们对该问题的处理能力不高。
编辑:
我问春天的家伙here execSpec
发生了什么。因此bootRun
又回归JavaExec
。因此,再也不可能在那里使用execSpec
。
答案 1 :(得分:1)
在更高版本的 Spring Boot 中,您可以省略 ExecSpec
,如下所示:
bootRun {
systemProperty 'com.example.foo', 'bar'
}