如何在 运行 gradle 时在应用程序中获取 VM 选项?
How to get VM options in application when running gradle?
我运行gradle任务:
gradle test -DtestProfile=dockerTest
当我尝试从应用程序获取此变量时:
System.getProperty("testProfile")
我得到空值。
如何在应用程序中正确获取虚拟机选项?
一些解释。
我有一些配置文件用于 运行 在不同环境中进行测试。每个配置文件的不同属性,如下所示:
application-local.yml
application-test.yml
application-dockerTest.yml
...
每个环境都应该根据其配置文件开始自己的测试。比,我写了解析器:
class TestActiveProfilesResolver : ActiveProfilesResolver {
override fun resolve(testClass: Class<*>): Array<String> =
System.getProperty("testProfile")
}
在这里使用它:
@ActiveProfiles(resolver = TestActiveProfilesResolver::class)
我想在 gradle 测试开始时发送 'testProfile' 变量,例如 VM 变量 -DtestProfile=dockerTest
。
但是System.getProperty("testProfile")
== null。
这里有两个 JVM 需要考虑
- Gradle 的 JVM
- 应用程序的 JVM
当您将“-D”参数传递给 Gradle 时,您正在 Gradle 的 JVM 中设置一个系统 属性,它与 运行 不同的 JVM ]是你的申请
你还没有说你是如何运行申请的。
- 您是否运行在测试用例中安装应用程序?
- 您是否运行通过 application plugin 中的“运行”任务完成它?
如果你想在测试期间设置 属性 你会做类似
test {
systemProperty 'testProfile', 'dockerTest'
}
如果您想在 运行通过“应用程序”插件安装您的应用程序时设置系统 属性,您可以
apply plugin: 'application'
run {
systemProperty 'testProfile', 'dockerTest'
}
我运行gradle任务:
gradle test -DtestProfile=dockerTest
当我尝试从应用程序获取此变量时:
System.getProperty("testProfile")
我得到空值。
如何在应用程序中正确获取虚拟机选项?
一些解释。
我有一些配置文件用于 运行 在不同环境中进行测试。每个配置文件的不同属性,如下所示:
application-local.yml
application-test.yml
application-dockerTest.yml
...
每个环境都应该根据其配置文件开始自己的测试。比,我写了解析器:
class TestActiveProfilesResolver : ActiveProfilesResolver {
override fun resolve(testClass: Class<*>): Array<String> =
System.getProperty("testProfile")
}
在这里使用它:
@ActiveProfiles(resolver = TestActiveProfilesResolver::class)
我想在 gradle 测试开始时发送 'testProfile' 变量,例如 VM 变量 -DtestProfile=dockerTest
。
但是System.getProperty("testProfile")
== null。
这里有两个 JVM 需要考虑
- Gradle 的 JVM
- 应用程序的 JVM
当您将“-D”参数传递给 Gradle 时,您正在 Gradle 的 JVM 中设置一个系统 属性,它与 运行 不同的 JVM ]是你的申请
你还没有说你是如何运行申请的。
- 您是否运行在测试用例中安装应用程序?
- 您是否运行通过 application plugin 中的“运行”任务完成它?
如果你想在测试期间设置 属性 你会做类似
test {
systemProperty 'testProfile', 'dockerTest'
}
如果您想在 运行通过“应用程序”插件安装您的应用程序时设置系统 属性,您可以
apply plugin: 'application'
run {
systemProperty 'testProfile', 'dockerTest'
}