WeM*_*are 46 spring gradle spring-boot
我正在使用Gradle spring-boot插件,我需要为测试运行选择一个弹簧活动配置文件.
如何将spring.profiles.active系统属性传递给bootRun插件的任务?
什么已经失败:
task bootRunLocal {
systemProperty "spring.profiles.active", "local"
System.setProperty("spring.profiles.active", "local")
tasks.bootRun.execute() // I suspect that this task is executed in a separate JVM
}
Run Code Online (Sandbox Code Playgroud)
并且一些命令行魔法也失败了:
./gradle -Dspring.profiles.active=local bootRun
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我解决我的烦恼吗?
从答案和评论中更新:
我可以设置systemProperty并通过执行以下操作将其传递给spring容器:
run {
systemProperty "spring.profiles.active", "local"
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,正在为bootRun任务和bootRunLocal任务设置本地配置文件.我需要一种方法来为bootRunLocal任务和调用booRun任务设置此属性bootRunLocal.
这可能听起来很简单,但我来自Maven结构化世界的和平.
Eri*_*ich 76
我知道我迟到了......但我最近遇到了这个问题.我试图使用spring.profiles.active和spring.config.location在命令行上设置为系统属性来启动bootRun.
因此,要使命令行"神奇"起作用,只需将其添加到build.gradle即可
bootRun {
systemProperties System.properties
}
Run Code Online (Sandbox Code Playgroud)
然后从命令行运行...
gradle -Dspring.profiles.active=local bootRun
Run Code Online (Sandbox Code Playgroud)
将local设置为活动配置文件,而无需仅添加env变量来定义单独的任务.
Pet*_*ser 17
没有将系统属性传递给任务的通用方法.简而言之,它仅支持分叉单独JVM的任务.
的bootRunLocal任务(如上所定义)将不会在一个单独的JVM执行,并调用execute()不支持任务(以及将具有在执行阶段发生在任何情况下).另一方面,测试始终在单独的JVM中执行(如果由Test任务执行).要为测试执行设置系统属性,您需要配置相应的Test任务.例如:
test {
systemProperty "spring.profiles.active", "local"
}
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请参阅Test在摇篮构建语言参考.
小智 17
task local {
run { systemProperty "spring.profiles.active", "local" }
}
bootRun.mustRunAfter local
Run Code Online (Sandbox Code Playgroud)
然后运行gradle命令:
gradle bootRun local
Run Code Online (Sandbox Code Playgroud)
根据spring-boot-gradle-plugin 文档,您应该能够传递这样的参数
./gradlew bootRun --args='--spring.profiles.active=dev'
Run Code Online (Sandbox Code Playgroud)
似乎这是自 4.9 以来的新 gradle 功能。我在我的项目中使用了它,它开箱即用。
小智 7
对于gradle 2.14,下面的示例有效.我添加如下.
当System.properties ['spring.profiles.active']为null时,则设置默认配置文件.
bootRun {
systemProperty 'spring.profiles.active', System.properties['spring.profiles.active']
}
Run Code Online (Sandbox Code Playgroud)
命令行示例
gradle bootRun -Dspring.profiles.active=dev
Run Code Online (Sandbox Code Playgroud)
仅供参考,如果有人会遇到此问题:
弗拉德的回答对我来说并不是很有用,但这个对于2.4来说效果很好,
task local <<{
bootRun { systemProperty "spring.profiles.active", "local" }
}
local.finalizedBy bootRun
Run Code Online (Sandbox Code Playgroud)
然后 gradle local
| 归档时间: |
|
| 查看次数: |
51110 次 |
| 最近记录: |