错误消息:
* What went wrong:
A problem occurred evaluating root project 'telescope-master'.
> Cannot get property 'dir' on null object
grade.properties文件
classes.dir = WebContent/WEB-INF/classes
webContent.dir = WebContent
template.dir = hdm/template
javascript.dir = hdm/function
javascript4.0.2.dir = hdm/function/4.0.2
datamodel.dir = hdm/datamodel
certificate.dir = certificate
build.gradle文件
Properties extFile = new Properties()
extFile.load(new FileInputStream('gradle.properties'))
task FirmwareMatch(type: Zip) {
from ("${extFile.javascript.dir}")
include 'factoryResetOnFirmwareMatch.*'
archiveName 'factoryResetOnFirmwareMatch.zip'
destinationDir file('dist/hdm/function')
}
所以基本上,如果我从两个文件的.dir中删除".",它就会起作用。但是有什么办法可以超越它吗?
此外,在渐变中使用${TODAY}时,如何显示实际日期。
所以您的问题表达式是:
extFile.javascript.dir
如果我们把它分解成Groovy将如何解释它:
extFile.getProperty('javascript').getProperty('dir')
您希望Groovy将其解释为:
extFile.getProperty('javascript.dir')
除了直接调用getProperty
之外,这里还有几个Groovy选项:
extFile.'javascript.dir'
extFile['javascript.dir']
此外,假设您的gradle.properties
文件位于项目根目录中(通常是build.gradle
的同级目录)或GRADLE_HOME
目录中(即~/.gradle/gradle.properties
),Gradle会自动加载该文件,并且所有属性都可用作项目属性。
因此,您可以删除所有属性解析代码,只需执行以下操作:
project.getProperty('javascript.dir')
// or
project.'javascript.dir'
// or
project['javascript.dir']
如果您希望防止未设置这些属性,并且使用Gradle 2.13或更高版本,则可以使用findProperty
而不是getProperty
,后者将返回null
而不是引发异常。