在我的gradle项目中,我有一个测试任务,并以这种方式设置从gradle.property文件读取的一些系统属性:
systemProperties["property1.username"] = property1_username
这样的一些属性:
systemProperty "property2.id",project.getProperty("property2.id")
两者有什么区别?我看到的差异是property2无法使用systemProperties,所以我经历了不同的路线。
答案 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生态系统中的不同方法是如何工作的。