Gradleを使ったWebアプリケーションのさくさく開発(トラブルシューティング編)

さくさく開発を目指しているのに、トラブルシューティングに時間をとられるのもいかがなものかと思いつつ…。

Build Gradle Model for xxx

昨日作ったgradle-sampleプロジェクトが、今日Eclipseを起動した時にタスクが何も実行できなくなってしまいました…。新規にGradleプロジェクトを作ろうとしてもやっぱりダメ…

Address family not supported by protocol family: 接続
 Could not fetch model of type 'EclipseProject' using Gradle distribution
'http://services.gradle.org/distributions/gradle-1.2-bin.zip'.

参考にしたサイト。

ここでEclipseのメニューバー[Window]→[Preferences]→[Gradle]のGradle DistributionのURI
http://services.gradle.org/distributions/gradle-1.0-rc-1-bin.zip
と入力したところ、うまく動作した。

http://exceptionblend.wordpress.com/2012/04/13/eclipse-gradle-gae/

今回Gradle1.3を使っているので、http://services.gradle.org/distributions/gradle-1.3-bin.zipを入力したら直りました(詳しい原因はよくわかってないですが)

2014/12/8 追記 最近はGradle Wrapperを使うのが当たり前になってきましたが、それでも同様のエラーに遭遇したので、追記しておきます。対策としては 
http://stackoverflow.com/questions/26085045/error-at-building-model-of-new-gradle-project-for-libgdx を参考に、Gradleラッパーのバージョン( ``gradle/wrapper/gradle-wrapper.properties`` に書かれています)を2.1から2.2に直したところ、解決しました。

Proxy Access Denied

リポジトリから依存するライブラリをダウンロードするのに、なぜかうまくいったりいかなかったりしました。

proxyの設定を疑って調べると、JAVA_OPTSとかGRADLE_OPTSにProxyの設定を行う方法も見つかりましたが、結局プロジェクトの下のgradle.propertiesに記述するのが一番安定しました。

systemProp.http.proxyHost=proxyhost
systemProp.http.proxyPort=8080
systemProp.http.nonProxyHosts=10.*|localhost
systemProp.https.proxyHost=proxyhost
systemProp.https.proxyPort=8080
systemProp.https.nonProxyHosts=10.*|localhost

sourceCompatibility = 1.7で互換性がないというエラー

[ウインドウ]-[設定]-[Gradle]のJava HomeがJDK1.7になっていなかったという初歩的なミス。

jettyが依存するorg.eclipse.jetty.orbitのダウンロードに失敗するミス

Jettyのライブラリを使おうとすると、org.eclipse.jetty.orbitの依存関係の解決でエラーになってしまう問題。新しめのJettyだと起こる(8以降?)みたいで、同じような問題に遭遇している人も結構いるみたいです。

以下のように依存関係を記述して解決しました。@jarとexclude moduleがポイント。何回かリトライしてうまくいったパターンです。

dependencies {
    compile "org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016@jar"
    compile('org.eclipse.jetty:jetty-server:8.1.9.v20130131') { exclude module: 'javax.servlet' }
}