问题描述
我有一个 Java 程序可以读取系统属性
I have a a Java program which reads a System property
System.getProperty("cassandra.ip");
我有一个以
gradle test -Pcassandra.ip=192.168.33.13
或
gradle test -Dcassandra.ip=192.168.33.13
但是System.getProperty 将始终返回null.
我发现的唯一方法是通过
The only way I found was to add that in my Gradle build file via
test {
systemProperty "cassandra.ip", "192.168.33.13"
}
我如何通过 -D 来实现
How Do I do it via -D
推荐答案
-P 标志用于 gradle 属性,-D 标志用于 JVM 属性.由于测试可能会在新的 JVM 中分叉,因此传递给 gradle 的 -D 参数不会传播到测试中 - 听起来这就是您所看到的行为.
The -P flag is for gradle properties, and the -D flag is for JVM properties. Because the test may be forked in a new JVM, the -D argument passed to gradle will not be propagated to the test - it sounds like that is the behavior you are seeing.
您可以像之前一样在 test
块中使用 systemProperty,但是通过传入的 gradle 属性将其作为基础 -P:
You can use the systemProperty in your test
block as you have done but base it on the incoming gradle property by passing it with it -P:
test {
systemProperty "cassandra.ip", project.getProperty("cassandra.ip")
}
或者,如果您通过 -D 传入它
or alternatively, if you are passing it in via -D
test {
systemProperty "cassandra.ip", System.getProperty("cassandra.ip")
}
这篇关于如何通过 Gradle 和 -D 为我的测试提供系统属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!