Eclipse/EGradleでgradle.propertiesが読み込めない
問題
これまで、ユーザホーム.gradle\gradle.propertiesにおいて全プロジェクトに関わる様々な基本設定を行い、これをEGradleで利用してきたのだが、バージョンを上げたらうまくいかなくなった。
これを読んでくれていないようなのである。バージョンは、
- EGradle: 2.6.0
- Gradle: 5.5
だ。具体的には、
c:\users\ユーザ名.gradle\gradle.propertiesに以下が記述されているのだが、
COMMON_GRADLE=C:/devel/workspace/gitlab_gradleCommon/common.gradle
build.gradleの先頭にある以下がエラーになる。
apply from: COMMON_GRADLE
うまく行く場合
- プロジェクトのbuild.gradleと同じ場所にgradle.propertiesをコピーしてやるとEGradleは動作する。
- EGradleを使わずに、プロジェクトフォルダをカレントにしてコマンドプロンプトでgradleコマンドを使うとうまくいく。
となっており、原因がさっぱりわからない。
そもそもgradle.propertiesはどこに置くのか?
どこにおいたgradle.propertiesが読み込まれるかだが、マニュアルのBuild Environmentによればこうだ。
下に行くほど優先される。
- プロジェクトのルートディレクトリにあるgradle.properties
- GRADLE_USER_HOMEに置かれたgradle.properties
- コマンドラインで-Dgradle.user.homeが設定された場合
感覚的には1.と2.の順番が逆のような気がするのだが。。。。
GRADLE_USER_HOMEはデフォルトで設定されている
もちろんGRADLE_USER_HOMEはデフォルト設定がされている。Windowsの場合これは、「c:\users\ユーザ名.gradle」になっているはずだ。
そのcachesの中にgradleが依存解決のために取得したjarが格納されるので、これが設定されていなければ、そもそも何も動作しないはず。
とりあえずの回避方法
環境変数にGRADLE_OPTSを定義することにした。つまり、
GRADLE_OPTS=-Dgradle.user.home=c:\users\ユーザ名\.gradle
とする。この環境変数は、Gradleインストールの中のbinにあるgradle.bat中から読み込まれており、EGradleはこのgradle.batを呼び出しているだけなのである。
ということは?
EGradle2.6.0ではなく、Gradle 5.5のバグなのだろうか?この辺は明らかではない。