我设法将Gradle proj.ver注入application.yml,然后将其注入服务应用程序。我的application.yml看起来像这样:
project:
version: ${version}
但是只有当我从cli启动应用程序时,它才有效:
gradle bootRun
如果我尝试从IntelliJ启动应用程序,则该应用程序无法正常运行,并且失败:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in value "${version}"
我阅读了Stackoverflow的所有答案,并提出了两种解决方案:
使用弹簧轮廓
修改运行配置并在启动gradle任务之前运行:processResources
从IntelliJ运行时,我更喜欢proj.ver的默认值。那可能吗?还是针对这种情况有更好的解决方案?
谢谢
正如Deinum M在上面的评论中所说,我设法从IntelliJ运行该应用程序,但是现在gradle bootRun
开始失败了:
原因:groovy.lang.MissingPropertyException:无此类属性:类未知:SimpleTemplateScript2
经过更多研究之后,似乎${version?:unknown}
(带有问号)它可以在IDE或cli中运行。
我已经更新了响应,以便其他人知道如何将Gradle构建信息注入Spring-boot:
1)告诉Gradle将构建数据传递给Spring yml文件,如下所示:
processResources {
filesMatching('appInfo.yml') {
expand(project.properties)
}}
2)appInfo.yml如下所示:
project:
version: ${version?:unknown}
3)将构建版本注入到Spring服务中,例如:
@Value("${project.version}")
private String applicationVersion;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句