Eclipse/EGradleでgradle.propertiesが読み込めない

2019年7月9日

問題

これまで、ユーザホーム.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によればこうだ。

下に行くほど優先される。

  1. プロジェクトのルートディレクトリにあるgradle.properties
  2. GRADLE_USER_HOMEに置かれたgradle.properties
  3. コマンドラインで-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のバグなのだろうか?この辺は明らかではない。