mike-neckのブログ

Java or Groovy or Swift or Golang

gvmからsdkmanにアップデートする

gradleユーザーの方も読んでもらいたい記事です。gvmがsdkmanに変わるらしいです。


gvmがgo version managerと名前がバッティングしてて、かつgo version managerの方が古くから存在していたとのことで、gvmがsdkmanに変わるそうです。

で、アップデートの仕方をすでにqiitaに書いていらっしゃる方がいたので、それを見ながら作業しています。人柱ありがとうございます。おじさんは、もう老害です。

qiita.com


特に入れたいcandidatesもないので、普通にgvm selfupdate forceでやりました。

~ $ gvm selfupdate force

GVM has been detected on your system...

This update will upgrade GVM to SDKMAN!

Do you want to continue with the upgrade? (Y/n)

途中くっそ長いので省略

Successfully upgraded SDKMAN.

Please open a new terminal, or run the following in the existing one:

    export SDKMAN_DIR="/Users/name/.sdkman" && source "/Users/name/.sdkman/bin/sdkman-init.sh"
~ $

続いて、これを打てと言われているコマンドを打ちます。

~ $ export SDKMAN_DIR="/Users/name/.sdkman" && source "/Users/name/.sdkman/bin/sdkman-init.sh"
~ $

何事も無く終わった模様。

candidatesを確認すると、

~ $ sdk list gradle

================================================================================
Available Gradle Versions
================================================================================
   * 2.7-rc-2             1.5                                                      
     2.7-rc-1             1.4                                                      
   * 2.7                  1.3                                                      
   * 2.6                  1.2                                                      
   * 2.5                  1.12                                                     

途中省略

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
~ $

あ、 currently in useのマークがない。

これらについてはhelpの情報を参考にsdk default gradle 2.7と打てばよいらしい

~ $ sdk default gradle 2.7

Default gradle version set to 2.7
~ $ sdk list gradle

そして、gradleのバージョンをもう一度確認。

~ $ sdk list gradle

================================================================================
Available Gradle Versions
================================================================================
   * 2.7-rc-2             1.5                                                      
     2.7-rc-1             1.4                                                      
 > * 2.7                  1.3                                                      
   * 2.6                  1.2                                                      
   * 2.5                  1.12                                                     

途中省略

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

2.7がデフォルトになった模様。


まとめ

gvmからsdkにアップデートする手順をまとめるとこうなります。

  1. gvm selfupdate force
  2. 最後に表示されるコマンドを打つか、新しいターミナルを起動する
  3. 一つ一つ心をこめて、手作業でsdk d candidate-name versionを打っていく

ちなみに

IntelliJさんは残念ながら、SDKの位置をgvmからsdkmanに変えてくれないので、こちらも心のこもった手作業で頑張りましょう。

f:id:mike_neck:20150917202633p:plain

ちなみに2

新たにターミナル立ち上げて、sdkと入力したところ、そんなコマンドないと怒られる。

そこで、.bash_profile.bashrcを見ましたがsdkmanのことが何も書かれてないようでした。

export SDKMAN_DIR="/Users/name/.sdkman"
[[ -s "/Users/name/.sdkman/bin/sdkman-init.sh" && -z $(which sdkman-init.sh | grep '/sdkman-init.sh') ]] && source "/Users/name/.sdkman/bin/sdkman-init.sh"

をこれまでのgvmの位置に書いてあげましょう。

なお、公式サイトはこちら


追記

【2015/09/17 23:02】

Gradleプロジェクトでビルドを行った時に、次のようにエラーが表示されることがあるようです。

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'javajo-gradle'.
> java.io.FileNotFoundException: /path/to/user/.gvm/gradle/2.7/lib/plugins/gradle-diagnostics-2.7.jar (No such file or directory)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

これは、Gradle daemonが有効になっていて、そのキャッシュを利用しようとして発生するエラーのようです。

この場合は、一度Gradle daemonを停止すると良いです。

Gradle daemonを停止する方法は以下のとおりです。

$ gradle --stop

その後に再びgradleを起動すれば、daemonのクラスが再作成されるので、ビルドがちゃんと行われるようになります。


amazon.co.jp