How to accept Gradle ToS for `build --scan` automatically and still manage to run build without a scan?

点点圈 提交于 2019-12-23 12:25:22

问题


I am using Gradle 4.6 which allows me to run build scans using the --scan option without having to explicitly apply or download extra plugins which is great. However this forces me to add the buildScan Terms of Service acceptance in my build.gradle file.

like this:

buildScan {
    termsOfServiceUrl = 'https://gradle.com/terms-of-service'
    termsOfServiceAgree = 'yes'
}

When I subsequently run gradle build without the --scan option I get the following error message:

> Could not find method buildScan() for arguments…

I don’t want to have to modify the build.gradle file every time I want/dont want a scan. I don’t want to apply the plugin explicitly (firewall issues) and I don’t get the chance to accept the of Terms of Service on the command line which I have also seen documented.

Can anyone tell me what I am doing wrong?

This question is formatted like a quote because it was already asked on Gradle Forums. But it's left without answer. I'm using Gradle 4.10.2 and the problem is still actual. I decided to draw more attention to this problem here.


回答1:


Just test the existence of buildScan

if (hasProperty('buildScan')) {
    buildScan {
        termsOfServiceUrl = 'https://gradle.com/terms-of-service'
        termsOfServiceAgree = 'yes'
    }
}



回答2:


This might not be a good or proper solution, but here's one workaround: use a try/catch to swallow the error, something like:

try {
    buildScan {
        termsOfServiceUrl = 'https://gradle.com/terms-of-service'
        termsOfServiceAgree = 'yes'
    }
} catch (MissingMethodException e){
   // This isn't the exception you're looking for
}


来源:https://stackoverflow.com/questions/52636622/how-to-accept-gradle-tos-for-build-scan-automatically-and-still-manage-to-ru

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!