diff --git a/src/main/groovy/com/vanniktech/code/quality/tools/CodeQualityToolsPlugin.groovy b/src/main/groovy/com/vanniktech/code/quality/tools/CodeQualityToolsPlugin.groovy index b7e5769..c360dd6 100755 --- a/src/main/groovy/com/vanniktech/code/quality/tools/CodeQualityToolsPlugin.groovy +++ b/src/main/groovy/com/vanniktech/code/quality/tools/CodeQualityToolsPlugin.groovy @@ -1,11 +1,13 @@ package com.vanniktech.code.quality.tools +import org.gradle.api.GradleException import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.quality.Checkstyle import org.gradle.api.plugins.quality.FindBugs import org.gradle.api.plugins.quality.Pmd import org.gradle.api.tasks.JavaExec +import org.gradle.api.tasks.Exec class CodeQualityToolsPlugin implements Plugin { @Override void apply(final Project rootProject) { @@ -238,10 +240,21 @@ class CodeQualityToolsPlugin implements Plugin { ktlint "com.github.shyiko:ktlint:${extension.ktlint.toolVersion}" } - subProject.task('ktlint', type: JavaExec) { - main = "com.github.shyiko.ktlint.Main" - classpath = subProject.configurations.ktlint - args "src/**/*.kt" + subProject.task('ktlint', type: Exec) { + commandLine 'java', '-cp', subProject.configurations.ktlint.join(System.getProperty('path.separator')), 'com.github.shyiko.ktlint.Main', '--reporter=checkstyle', 'src/**/*.kt' + def outputDirectory = new File(subProject.buildDir, "reports/ktlint/") + outputDirectory.mkdirs() + + def outputFile = new File(outputDirectory, "ktlint-checkstyle-report.xml") + standardOutput = new FileOutputStream(outputFile) + ignoreExitValue = true + + doLast { + standardOutput.close() + if (execResult.exitValue != 0) { + throw new GradleException("ktlint finished with non-zero exit value ${execResult.exitValue}. Generated report at $outputFile") + } + } } subProject.task('ktlintFormat', type: JavaExec) { diff --git a/src/test/groovy/com/vanniktech/code/quality/tools/CommonCodeQualityToolsTest.groovy b/src/test/groovy/com/vanniktech/code/quality/tools/CommonCodeQualityToolsTest.groovy index 8199acd..8814935 100755 --- a/src/test/groovy/com/vanniktech/code/quality/tools/CommonCodeQualityToolsTest.groovy +++ b/src/test/groovy/com/vanniktech/code/quality/tools/CommonCodeQualityToolsTest.groovy @@ -18,12 +18,21 @@ public abstract class CommonCodeQualityToolsTest { javaProject = ProjectBuilder.builder().withName('java').withParent(rootProject).build() javaProject.plugins.apply('java') + javaProject.repositories { + jcenter() + } androidAppProject = ProjectBuilder.builder().withName('android app').build() androidAppProject.plugins.apply('com.android.application') + androidAppProject.repositories { + jcenter() + } androidLibraryProject = ProjectBuilder.builder().withName('android library').build() androidLibraryProject.plugins.apply('com.android.library') + androidLibraryProject.repositories { + jcenter() + } projects = [javaProject, androidAppProject, androidLibraryProject] }