我正在尝试根据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()?
最佳答案
从Spring Boot 2.0.0开始,execSpec
应该在bootRun
中工作。但是我今天遇到了同样的问题。奇怪的是,它一度起作用,但在我更改了项目名称后几秒钟后停止了工作。
我意识到此更改触发了Gradle刷新,并且之后以某种方式在我的gradle缓存中存在spring-boot-gradle-plugin-2.0.0.BUILD-SNAPSHOT.jar
的两个不同版本。 On是57 kb,其他58 kb。我解开了 jar 的包装,调查了内容,发现区别恰恰是org.springframework.boot.gradle.tasks.run.BootRun
类,一个类为3 kb,另一个版本为7 kb。因此,我认为57 kb版本缺少execSpec
。
然后我直接检查了Spring存储库,并意识到快照文件来自今天(11/23/2017)。因此,今天有一个新的快照,而该版本中的execSpec
已不存在。由于您的问题来自10月,我们可能无法使用相同的文件,但是您可能遇到了相同的问题。我不太了解为什么execSpec
似乎来来去去,但是我想这就是使用SNAPSHOT版本的代价。
因此,除了等到第一个稳定的版本或下一个包含execSpec
的下一个snaphot或提供设置系统变量的另一种可能性之外,我们对此问题无能为力。
编辑:
我问Spring-Guys here execSpec
怎么了。因此,bootRun
又回到了JavaExec
。因此根本不可能再在那里使用execSpec
。