我有一个读取System属性的Java程序
System.getProperty("cassandra.ip");
我有一个Gradle构建文件,我开始
gradle test -Pcassandra.ip=192.168.33.13
要么
gradle test -Dcassandra.ip=192.168.33.13
但 System.getProperty 将始终返回 null .
我找到的唯一方法是在我的Gradle构建文件中添加它
test {
systemProperty "cassandra.ip", "192.168.33.13"
}
我怎么做通过-D
4 回答
-P标志用于gradle属性,-D标志用于JVM属性 . 因为测试可以在新的JVM中分叉,所以传递给gradle的-D参数不会传播到测试 - 听起来就像你看到的那样 .
您可以像使用的那样在
test
块中使用systemProperty,但可以通过将其传递给-P来将其基于传入的gradle属性:或者,如果你通过-D传递它
碰到这个非常大的问题,除了我不想再次列出gradle脚本中命令行上给出的所有属性 . 因此,我将所有系统属性发送到我的测试
我有一个案例,我需要将多个系统属性传递给测试JVM但不是全部(不想传递不相关的) . 基于上述答案,并使用
subMap
来过滤我需要的答案,这对我有用:在此示例中,如果它们存在于gradle的JVM中,则只传入
PROP1
和PROP2
.这是一个将许多项目属性作为系统属性传递给测试JVM的变体 . 我更喜欢项目属性而不是系统属性来增加灵活性 .
可以在命令行上传递:
并在您的测试中检索: