我運行gradle任務:
gradle test -DtestProfile=dockerTest
當我嘗試從應用程式獲取此變數時:
System.getProperty("testProfile")
我得到空值。
如何在應用程式中正確獲取 VM 選項?
有些解釋。
我有一些用于在不同環境中運行測驗的組態檔。每個組態檔的不同屬性,如下所示:
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' 變數-DtestProfile=dockerTest,例如,使用 VM 變數。
但是System.getProperty("testProfile")== 空。
uj5u.com熱心網友回復:
這里有兩個 JVM 需要考慮
- Gradle 的 JVM
- 應用程式的 JVM
當您將“-D”引數傳遞給 Gradle 時,您是在 Gradle 的 JVM 中設定系統屬性,這與運行您的應用程式的 JVM 不同
你還沒有說你是如何運行你的應用程式的。
- 您是否在測驗用例中運行應用程式?
- 您是否通過應用程式插件中的“運行”任務運行它?
如果您想在測驗期間設定屬性,您可以執行以下操作
test {
systemProperty 'testProfile', 'dockerTest'
}
如果您想在通過“應用程式”插件運行應用程式時設定系統屬性,您可以這樣做
apply plugin: 'application'
run {
systemProperty 'testProfile', 'dockerTest'
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311272.html
