我正在使用 Gradle 4.6,它允许我使用以下命令运行 build scans
选项,无需明确应用或下载 额外的插件非常棒。然而这迫使我添加--scan
我的 build.gradle 文件中接受服务条款。buildScan
像这样:
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
当我随后在没有
选项的情况下运行gradle build
时,我 收到以下错误消息:--scan
> Could not find method buildScan() for arguments…
我不想每次都修改build.gradle文件 想要/不想要扫描。我不想明确应用该插件 (防火墙问题)并且我没有机会接受以下条款 我也看到了命令行上的服务记录。
谁能告诉我我做错了什么?
这个问题的格式类似于引用,因为它已经在 Gradle 论坛 上被问过。但没有答案。我正在使用 Gradle 4.10.2,问题仍然存在。我决定在这里引起更多关注这个问题。
只需测试
buildScan
是否存在
if (hasProperty('buildScan')) {
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
}
同样可以在像这样的 kotlin 构建文件中完成 - (感谢这个答案):
if (hasProperty("buildScan")) {
extensions.findByName("buildScan")?.withGroovyBuilder {
setProperty("termsOfServiceUrl", "https://gradle.com/terms-of-service")
setProperty("termsOfServiceAgree", "yes")
}
}
请参阅连接到 scans.gradle.com 文档了解更多详细信息。
这可能不是一个好的或正确的解决方案,但这里有一个解决方法:使用
try
/catch
来吞掉错误,例如:
try {
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
} catch (MissingMethodException e){
// This isn't the exception you're looking for
}
您可以使用
echo
命令通过管道将“是”作为答案
例如,
echo "yes" | ./gradlew build --scan