はじめに
の通りに設定しても、Windows 環境でエラーとなりました。
C:\Users\oki2a24\CompilingAndTestingJava7WithGradleInWindows>gradlew.bat build FAILURE: Build failed with an exception. * Where: Build file 'C:\Users\oki2a24\CompilingAndTestingJava7WithGradleInWindows\build.gradle' line: 21 * What went wrong: A problem occurred evaluating root project 'CompilingAndTestingJava7WithGradleInWindows'. > There is no javadoc executable in C:\Program Files\Java\jdk1.7.0_80\bin. Expression: executable.exists() * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 1s C:\Users\oki2a24\CompilingAndTestingJava7WithGradleInWindows>
修正内容と、その原因・理由をノートします。
また、修正したコードは次のリポジトリとしてアップしています。
修正のポイント
tasks.withType(Javadoc) { executable = javaExecutables.javadoc } tasks.withType(Test) { executable = javaExecutables.java } tasks.withType(JavaExec) { executable = javaExecutables.java }
Windows 版では上記部分を次のように指定すれば良いです。
tasks.withType(Javadoc) { executable = javaExecutables["javadoc.exe"] } tasks.withType(Test) { executable = javaExecutables["java.exe"] } tasks.withType(JavaExec) { executable = javaExecutables["java.exe"] }
解説
def javaExecutables = [:].withDefault { execName ->
がポイントで、Groovy 言語の withDefault 関数は、Map から要素を取り出すときに、指定したキーが存在しなければクロージャに書かれた処理を実行して返します。
例えば、javaExecutables.javadoc と指定されたとき、Map には javadoc というキーに対応する値がないため、クロージャ内部の処理が実行され、executable = new File(javaExecutablesPath,"javadoc")
が返ります。
Mac や Linux では本家ページの例のままでうまく動作するとは思いますが、Windows の場合、exe が付くため、そんなファイルは無いとエラーになってしまいます。
それで、例えば javadoc は javadoc.exe へと修正する必要があったのです。
結果
次のように、無事 Java ビルドが完了しました!
C:\Users\oki2a24\CompilingAndTestingJava7WithGradleInWindows>gradlew.bat build > Configure project : 状態の確認 org.gradle.java.home: C:/Program Files/Java/jdk1.8.0_162 javaHome: C:/Program Files/Java/jdk1.7.0_80 BUILD SUCCESSFUL in 2s 4 actionable tasks: 4 executed C:\Users\oki2a24\CompilingAndTestingJava7WithGradleInWindows>
おわりに
全体的に参考になったページです。ありがとう存じます!
- Gradle プロジェクトに対する設定の書き方の基本
- Java のビルドに使う Java のパスを指定する。
- Gradle の使う Java を指定する。
- gradle.properties の値を取得する。
以上です。