如果找不到文件依赖项,如何使Gradle失败?

我有一个Gradle构建,它有一些表单的依赖项

compile files('path/to/local/lib.jar') 

(构建正在迁移 – 最终将被替换)

构建失败,因为错误地指定了其中一个路径。 但由于编译错误而失败 – 看起来Gradle默默地忽略了缺失的依赖项。

是否存在一个简单的选项或开关,如果无法解析任何依赖关系(特别是本地文件依赖关系)(例如,文件丢失),将强制Gradle使构建失败?

编辑:进一步澄清:

如果在配置的存储库中找不到依赖项,Gradle将在尝试解析它时失败,如预期的那样。

但是 – 如果依赖项被定义为“编译文件….”,并且指定的文件在构建时不存在,Gradle将忽略该错误,并尝试编译。 这似乎是错误的头脑和不一致的默认行为。

我的问题是 – 是否有Gradle选项或开关或环境变量或系统属性,我可以设置为强制Gradlevalidation文件依赖性是否存在? (例如,以理智和理性的方式行事?)

要使构建失败,您可以:

 ant.fail('message why it failed') 

然后你可以制作一个条件然后失败的构建与良好的消息;)

我建议创建一个任务,首先将文件带到项目中,条件是检查文件是否可用等等,然后抛出Gradleexception并使构建失败,并在执行时首先执行任务相。

我现在没有机会测试它,但它可能是这样的,如果任何语法错误,请纠正我 – 但你应该明白这一点。

 def yourDep = $/\path\to\your\depdendency/$ task bringDeps << { if (yourDep.exists()){ copy { from yourDep into $projectDir/depsOrSmthg } } else{ ant.fail('message why it failed') } } 

你可以做一些如下所示的事情。 它不是内置的Gradle函数,但不需要代​​码来专门检查每个依赖项(它在compile配置中检查所有依赖项):

 apply plugin: 'java' dependencies { compile files('lib/abc.jar') compile files('lib/def.jar') } task checkDependencies() { doLast { configurations.compile.each { file -> assert file.exists() } } } compileJava.dependsOn checkDependencies