使用Gradle,如何确保某个位置存在文件?

Men*_*hak 22 android intellij-idea gradle

我开始将Gradle用于Android应用程序.如果开发人员无法在特定位置创建文件,我希望构建失败./src/res/values/specialfile.xml

一点点搜索让我相信一个.doFirst会工作

android.doFirst { 
    assert file("./src/res/values/specialfile.txt").exists() 
} 
Run Code Online (Sandbox Code Playgroud)

但是,Gradle说 "找不到支持的Gradle DSL方法:'doFirst()'!"

我该怎么做才能断言文件的存在?

Xav*_*het 41

doFirst仅存在于tasks对象上.android不是一项任务.

即使开发人员没有尝试构建(例如在运行tasks任务时),如果希望始终完成此测试,您应该简单地输入build.gradle

assert file("./src/res/values/specialfile.txt").exists() 
Run Code Online (Sandbox Code Playgroud)

但是,实际上不建议这样做,因为即使对于非构建任务,甚至在为IDE集成构建模型时,也会执行此操作.

有一个被调用的任务preBuild在android构建之前执行,所以你可以通过另一个任务或通过doFirst以下方式将测试挂钩到它:

preBuild.doFirst { 
    assert file("./src/res/values/specialfile.txt").exists() 
} 
Run Code Online (Sandbox Code Playgroud)