我有一个Gradle构建,它有一些
形式的依赖项compile files('path/to/local/lib.jar')
(正在迁移构建 - 最终将替换它们)
构建失败,因为未正确指定其中一个路径。但它由于编译错误而失败 - 看起来Gradle默默地忽略了丢失的依赖项。
如果无法解决任何依赖关系(特别是本地文件依赖关系)(例如,文件丢失),是否有一个简单的选项或开关会强制Gradle使构建失败?
编辑:进一步澄清:
如果在配置的存储库中找不到依赖项,Gradle将在尝试解析它时失败,如预期的那样。
但是 - 如果依赖项定义为"编译文件....",并且在构建时指定的文件不存在,Gradle将忽略该错误,并尝试编译。这似乎是引人注目的错误的头脑和不一致的默认行为。
我的问题是 - 是否有Gradle选项或开关或环境变量或系统属性,我可以设置为强制Gradle验证文件依赖性是否存在? (例如,以理智和理性的方式行事?)
答案 0 :(得分:0)
要使构建失败,您可以:
ant.fail('message why it failed')
然后你可以制作一个条件,然后使用好消息使构建失败;)
我建议创建一个任务,首先将文件带到项目中,条件是检查文件是否可用等等,然后抛出Gradle异常并使构建失败,并首先执行任务在执行阶段。
我现在没有机会测试它,但它可能是这样的,如果任何语法错误,请纠正我 - 但你应该明白这一点。
def yourDep = $/\path\to\your\depdendency/$
task bringDeps << {
if (yourDep.exists()){
copy {
from yourDep
into $projectDir/depsOrSmthg
}
} else{
ant.fail('message why it failed')
}
}
答案 1 :(得分:0)
您可以执行以下操作。它不是内置的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
答案 2 :(得分:0)
[Vue warn]: Multiple root nodes returned from render function. Render function should return a single root node.