Отключить плагин gradle в зависимости от цели java

Я использую Gradle 3 и Sonarqube в проекте Java7: https://github.com/cbeust/testng/blob/master/build.gradle.

И мой ci - Трэвис с Java7 и Java8: https://travis-ci.org/cbeust/testng/

Только последние версии плагина Sonarqube поддерживают Gradle 3 и работают только в среде выполнения Java8. Когда я запускаю сборку Gradle с Java7, она терпит неудачу с java.lang.UnsupportedClassVersionError: org/sonarqube/gradle/SonarQubePlugin : Unsupported major.minor version 52.0

Я попытался включить плагин SonarQube только с Java8, но это тоже не удалось: https://github.com/cbeust/testng/blob/update-gradle-plugins/build.gradle

Я попытался определить плагин SonarQube во внешнем файле Gradle, но Gradle разрешает определение плагина только в основном файле.

Я бы хотел избежать дублирования build.gradle. Является ли это возможным?


person juherr    schedule 15.12.2016    source источник


Ответы (1)


Сделайте так, чтобы плагины DSL не применяли плагин автоматически, а применяли его вручную, например

plugins {
    id "org.sonarqube" version "2.2.1"
}

apply plugin: 'org.sonarqube'

тогда вы сможете поместить приложение в отдельный файл Gradle или применить его только в зависимости от любого условия, которое вы можете сформулировать с помощью Groovy.

person Vampire    schedule 15.12.2016