Как автоматически принять Gradle ToS для `build --scan` и все же запустить сборку без сканирования?

Я использую Gradle 4.6, который позволяет мне запускать сканирование сборки, используя --scan вариант без необходимости явно применять или загружать дополнительные плагины, что здорово. Однако это заставляет меня добавить buildScan Условия предоставления услуг принимаются в моем файле build.gradle.

как это:

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 и проблема все еще актуальна. Я решил обратить больше внимания на эту проблему здесь.

3 ответа

Решение

Просто проверить существование buildScan

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

Вам просто нужно добавить указанный выше блок кода в файл buid.gradle(Project), и сканирование сборки будет автоматически опубликовано.

В Jenkins вы получите ссылку с результатами сканирования сборки.

Это не может быть хорошим или правильным решением, но вот один из обходных путей: используйте 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
}
Другие вопросы по тегам