IntelliJ IDEAにてgoenvで入れたGoを扱う
goenvでGoをインストールしてIntelliJ IDEAを使って、久しぶりGoを書いてみようと思ったら躓いたのでメモ書きです。
各種バージョン
$ goenv --version goenv 2.0.0beta11 $ go version go version go1.16.3 darwin/amd64
インストール方法はGitHubのリポジトリに書いてある通りに行っています。
https://github.com/syndbg/goenv/blob/2.0.0beta11/INSTALL.md
なにが起きたか
go get
やgo mod tidy
をターミナルから実行してモジュールを取得した場合、IntelliJ IDEAでコードを書こうとするとモジュールが取得できていないようになってしまいます。
IntelliJ IDEAの初期設定ではgoのモジュールがある場所が~/go
になっています。
しかしgoenvで入れたGoを使ってgo get
などをすると~/go/{version}
配下にダウンロードされます。
そのため、IntelliJ IDEAの設定とコマンドを実行してダウンロードした場所が違うためIntelliJ IDEAで認識されていないようです。
goenvが~/go/{version}
配下にダウンロードするようになったのは2.0.0beta6からのようです。
https://github.com/syndbg/goenv/blob/2.0.0beta11/CHANGELOG.md#200beta6
つまりGOPATHを合わせてあげればいいことになります。
解決策
goenvの環境変数でGOENV_DISABLE_GOPATH=1
を設定してあげればGOPATHが~/go
になりますが、goenv的には~/go/{version}
が推薦されるようです。
https://github.com/syndbg/goenv/blob/2.0.0beta11/ENVIRONMENT_VARIABLES.md
なので、IntelliJ IDEAの設定でGOPATHを設定してあげることにしました。
Preferences > Languages & Frameworks > GOPATH に/Users/hoge/go/1.16.3
を設定し無事読み込まれるようになりました。