Gradle和Java:在测试任务中调用系统属性的正确方法是什么

时间:2017-06-15 17:47:32

标签: java gradle

在我的gradle项目中,我有一个测试任务,并以这种方式设置从gradle.property文件读取的一些系统属性:

systemProperties["property1.username"] = property1_username

这样的一些属性:

systemProperty "property2.id",project.getProperty("property2.id")

两者有什么区别?我看到的差异是property2无法使用systemProperties,所以我经历了不同的路线。

1 个答案:

答案 0 :(得分:1)

这两个示例基本上都是为Gradle Test任务注册系统属性的有效方法。

在第一个示例中,您可以通过隐藏的getter(systemProperties)直接访问Groovy feature属性。此属性是Map,在Groovy中,您可以直接使用下标运算符[]添加条目。您使用字符串"property1.username"作为条目键,将表达式property1_username的值用作条目值。表达式必须可以在Gradle Project范围内解析,但Gradle properties,例如systemProperty。从gradle.properties文件中自动添加到此范围。

在第二个示例中,您使用的是Test类的https://en.wikipedia.org/wiki/Weissman_score方法。它需要两个参数(名称和值),并向上面提到的Map添加一个新条目。 Groovy允许省略方法调用的不必要的括号。要获取系统属性值(第二个方法参数),可以调用getProperty对象的Project方法,该方法也会解析Gradle Project范围内的属性。

我不知道,为什么你的property2不适用于systemProperties方法,也许这只是一个简单的拼写错误,因为这两种方式都应该像魅力一样。您可以随意使用链接的文档来了解Gradle生态系统中的不同方法是如何工作的。