使用 gradle 加载命令行属性但找不到方法 execSpec()
Posted
技术标签:
【中文标题】使用 gradle 加载命令行属性但找不到方法 execSpec()【英文标题】:Using gradle to load command line properties but cannot find method execSpec() 【发布时间】:2018-04-06 01:19:33 【问题描述】:我正在尝试根据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()?
【问题讨论】:
【参考方案1】:在更高版本的 Spring Boot 中,您可以省略 ExecSpec
,如下所示:
bootRun
systemProperty 'com.example.foo', 'bar'
【讨论】:
【参考方案2】:从 Spring Boot 2.0.0 开始,execSpec
应该在 bootRun
中工作。但是我今天遇到了同样的问题。奇怪的是,在我更改项目名称后,它曾一度工作,几秒钟后停止工作。
我意识到这个更改触发了 Gradle 刷新,不知何故,我的 gradle 缓存中有两个不同版本的 spring-boot-gradle-plugin-2.0.0.BUILD-SNAPSHOT.jar
。 On 是 57 kb,另一个是 58 kb。我打开了 jars 的包装,查看了里面的内容,发现差异正是 org.springframework.boot.gradle.tasks.run.BootRun
类,一个是 3 kb,另一个是 7 kb。所以我猜57 kb版本缺少execSpec
。
然后我直接查看了 Spring 存储库,发现快照文件是从今天(2017 年 11 月 23 日)开始的。所以今天有一个新的快照出现,execSpec
在那个版本中消失了。由于您的问题是从 10 月开始的,我们可能没有使用相同的文件,但您可能遇到了同样的问题。我真的不明白为什么 execSpec
似乎来来去去,但我想这就是使用 SNAPSHOT 版本的代价。
因此,对于这个问题,我们无能为力,只能等到第一个稳定版本或下一个包含 execSpec
的快照或提供另一种设置系统变量的可能性。
编辑:
我问 Spring-guys here execSpec
发生了什么事。所以bootRun
又回到了JavaExec
。所以根本不可能再在那里使用execSpec
。
【讨论】:
以上是关于使用 gradle 加载命令行属性但找不到方法 execSpec()的主要内容,如果未能解决你的问题,请参考以下文章
Windows 成功地加载了这个硬件的设备驱动程序,但找不到硬件设备。 (代码 41)
模块“msvcp110.dll”已加载,但找不到入口点DllRegisterserver。 怎么办