我正在尝试按照 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
。一个是 57 kb,另一个是 58 kb。我打开jar包,查看内容,发现差异正是类org.springframework.boot.gradle.tasks.run.BootRun
,其中1个是3 kb,而7 kb在另一个版本中。所以我猜 57 kb 版本缺少 execSpec
。
然后我直接检查了Spring存储库,发现快照文件是今天(11/23/2017)的。因此,今天出现了新的快照,而该版本中的 execSpec 已消失。由于您的问题是从十月份开始的,我们可能没有使用相同的文件,但您可能遇到了同样的问题。我真的不明白为什么 execSpec
似乎来来去去,但我想这就是使用 SNAPSHOT 版本的代价。
因此,除了等待第一个稳定版本或再次包含 execSpec
的下一个快照或提供设置系统变量的另一种可能性之外,我们对这个问题无能为力。
编辑:
我问了 Spring 的人here execSpec
发生了什么。因此,bootRun
又回到了 JavaExec
。所以根本不可能再在那里使用 execSpec
。
关于java - 使用gradle加载命令行属性但找不到方法execSpec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46924150/