是否可以因为变量名称中的 ("." 和 "-" )而覆盖 gradle 提示错误?例如;名称.dir (找不到 .dir) 在任务中



错误消息:

* 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而不是引发异常。

相关内容

最新更新