2015-09-07 3 views
4

У меня есть проект java на моем ноутбуке, и я строю его с помощью градиента. Все зависимости находятся в файловой системе, так как я большую часть времени работаю над ней. В любом случае их не так уж много.Gradle Невозможно запустить checkstyle

build.gradle:

repositories { 
    flatDir { 
     dirs "${rootDir}/lib/main", "${rootDir}/lib/test", "${rootDir}/lib/quality" 
    } 
} 

ext.configDir = "${rootDir}/gradle/config" 
ext.scriptsDir = "${rootDir}/gradle/scripts" 

Теперь мне нужно добавить некоторые проверки качества против моего кода. Мне посчастливилось заставить PMD проверять работу, но не так повезло с checkstyle. Пример из распределения градиентов, градиент в книге действий, которую я читал, документация по градуированию, похоже, не является наукой о ракетах, но я просто не могу заставить ее работать, что очень расстраивает, тем более, что с муравьем это было бы задачей за пять минут. В любом случае это мой gradle.build вход для Checkstyle:

apply from: "${scriptsDir}/checkstyle.gradle" 

и это мой checkstyle.gradle (частично показан):

apply plugin: 'checkstyle' 

ext.checkstyleConfigDir = new File(configDir, "checkstyle") 
ext.checkstyleReportsDir = new File(reportsDir, "checkstyle") 
ext.xslStyleFile = new File(checkstyleConfigDir, "checkstyle-noframes.xsl") 

checkstyle { 
    toolVersion = '6.10.1' 
    configFile = new File(checkstyleConfigDir, 'sun_checks.xml') 
    ignoreFailures = true 
    showViolations = true 
} 

checkstyleMain.doLast { 
    def main = new File(checkstyleReportsDir, "main.xml") 
    if (main.exists()) { 
     ant.xslt(in: main, style: xslStyleFile, out: new File(checkstyleReportsDir, "main.html")) 
    } 
} 

dependencies { 
    checkstyle('com.puppycrawl.tools:checkstyle:6.10.1') 
} 

Однако при выполнении моей сборки задача Checkstyle терпит неудачу как показано ниже:

* What went wrong: 
Execution failed for task ':checkstyleMain'. 
> java.lang.ClassNotFoundException: com.puppycrawl.tools.checkstyle.CheckStyleTask 

Внутри checkstyle-6.10.1.jar Я могу видеть ther e не является таким классом, как com.puppycrawl.tools.checkstyle.CheckStyleTask, но есть один, который называется com.puppycrawl.tools.checkstyle.ant.CheckStyleAntTask, и я подозреваю, что это тот, который должен вызывать градация. Однако я понятия не имею, как заставить gradle ссылаться на это.

Единственное, что у меня есть, это то, что мой toolVersion = '6.10.1' не определен правильно, а gradle вызывает с использованием какого-либо значения по умолчанию. Однако вся документация по gradle api говорит об этом: «String toolVersion Версия используемого инструмента качества кода».

Так что я делаю неправильно, и как мне его исправить.

Заранее благодарим за входные данные.

ответ

4

Вы столкнулись с ошибкой в ​​Gradle (GRADLE-3314). Эта проблема исправлена ​​в Gradle 2.7, которая должна скоро выйти. Не могли бы вы проверить, что проблема решена с последним выпускником релиза 2.7?

Вы можете захватить Gradle 2.7-rc-2 с целевой страницы gradle release candidate.

+0

Большое спасибо Рене. Это исправило мою проблему. На домашнем компьютере с использованием стабильного RC должно быть вполне удовлетворительным. Я вижу, что у вас хорошая репутация с градлой. Не возражаете, если я попрошу вас взглянуть и в конце концов прокомментировать [этот тоже] (http://stackoverflow.com/questions/32344216/gradle-leaves-java-process-after-finishing-ant-invocation). По внешнему виду мне кажется, что еще нужно исправить; более серьезным я бы сказал. Еще раз спасибо. – Julian

+0

Я могу подтвердить это исправил проблему: я был на gradle 2.6 и обновлялся до 2.7 исправил его. – Bohemian

+0

Я использую gradle 3.1 с checkstyle 7.1.2 и получил ту же проблему. Есть предположения? –

Смежные вопросы