Gradleでは、タスクの中で外部コマンドを実行することができる。
Gradle CheckStyle Pluginは、JavaコードだけしかCheckしないため、他のファイルに対してチェックを行うために、外部コマンドでチェックを実行する時の実装を紹介する。
以下のコードでは、ソースのコンパイル完了後にsrc/main/resources
配下のファイルのCheckstyleのチェックを実行するようにしている。
プロジェクトのディレクトリ構成は以下の通り。
プロジェクトルート | |ーーconfig | |ーーcheckstyle | |ーー checkstyle.xml(Checkstyleの設定ファイル) | |ーー checkstyle-10.3.1-all.jar(外部コマンドで実行したいJarファイル) |ーーsrc | |ーmain |ーーbuild.gradle
build.gradle
tasks.withType(JavaCompile) { // Gradle Checkstyle Pluginは、JavaコードだけしかCheckしないため、自力でコマンド実行 doLast{ def stdout = new ByteArrayOutputStream(); exec { workingDir = rootDir // 実行したいコマンドをここに書く commandLine 'java', '-Dconfig_loc=./config/checkstyle', '-jar', './config/checkstyle/checkstyle-10.3.1-all.jar', '-c', './config/checkstyle/checkstyle.xml', "${projectDir}/src/main/resources" standardOutput = stdout; } // 標準出力に'[WARN]'が存在する場合、CheckStyleで警告が存在するため、ビルド失敗とする if (stdout.toString().contains('[WARN]')) { println "Output:\\n$stdout"; throw new RuntimeException('Build failed. CheckStyle'); } } }