はじめに
社内の認証プロキシに阻まれていたことで長らく敬遠していたGrails 3.xですが、このたびようやくプロキシを突破し開発スタートできたので、どのような設定をしたかを書いておきます。
Grails 2.xまでは、Grailsコマンドのadd-proxy/set-proxyコマンドでプロキシ情報を設定できましたが、Grails 3.xではそこが大きく変わっているので、少し調査が必要でした。
前提条件
今回は以下の環境で試しました。
- OS:Windows8.1/10
- IDE:IntelliJ IDEA(ULTIMATE 2017.2)
- Grailsバージョン:3.3.0
create-app
まずはcreate-appですが、この時点でプロキシの設定をしておかないと失敗します。
システム環境変数の設定
いろいろ試した結果、以下の設定をシステム環境変数に入れればいいということがわかりました。
変数名は「JAVA_OPTS」、値は以下。
-Dhttp.proxyHost=proxy.host.com -Dhttp.proxyPort=1234 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password -Dhttps.proxyHost=proxy.host.com -Dhttps.proxyPort=1234 -Dhttps.proxyUser=username -Dhttps.proxyPassword=password
関係ないですが、Windows10では環境変数を登録・編集で複数値をわけて入力できるようになるなどUIが進化していて、便利ですね。初めて見たときはちょっと感動しました。
コマンドプロンプトから「grails」実行
さて、これで設定は完了なのですが、IDE(IntelliJ IDEA)からcreate-appしようとするとエラーが出てしまいます。が、実はコマンドプロンプトから1回grailsコマンドを実行するだけで、その後エラーなくcreate-appできるようになります。
Grailsのインストールディレクトリをコマンドプロンプトで開き、「grails」を実行しましょう(コマンドプロンプト等からGrailsコマンドを実行する想定であれば、Grailsのインストールディレクトリに対するPathの設定が必須ですが、今回はIDEでの実行を前提としているので割愛します)。
run-app
アプリの実行をするには、Grails 3.xのビルドシステムであるGradleにプロキシ情報を教えてあげなければなりません。
「gradle.properties」をC:\Users\<user>\.gradle 配下に作成し、以下の内容で保存しておきます。
systemProp.https.proxyHost=proxy.host.com
systemProp.https.proxyPort=1234
systemProp.https.proxyUser=username
systemProp.https.proxyPassword=password
systemProp.http.proxyHost=proxy.host.com
systemProp.http.proxyPort=1234
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password
この設定をすると、認証プロキシ下でもrun-appが成功するようになります。
ちなみにこの設定をしないと、
Could not resolve all dependencies for configuration ':detachedConfiguration24'.
というようなエラーが出てしまいました。
このようなエラーが出たら、Gradle側のプロキシ情報が正しく設定されているか確認してみてください。