カテゴリー
コンピューター

【Gradle】Windows 環境で、Java 7 でプロジェクトをビルド、テストする方法を少し掘り下げる

はじめに

の通りに設定しても、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>

おわりに

全体的に参考になったページです。ありがとう存じます!

以上です。

コメントを残す