Go Modulesとは
Go 1.11 から追加された外部パッケージを管理する機構です。
それまでは、Go のコードは外部パッケージも含めてすべて $GOPATH/src
以下に置かなくてはいけないという決まりがあったのですが、Go Modules を使うことにより、任意の場所に置くことができるようになりました。
ただし、Go Modules を使って自動的にダウンロードしてくれるパッケージは $GOPATH
以下に置かれるので、$GOPATH
が使われなくなるわけではありません。
使い方
簡単な使い方は https://github.com/golang/go/wiki/Modules#quick-start にある Quick Start を試してみるのが良さそうなので、試してみました。
まず、適当にプロジェクト用のディレクトリを作成して、Quick Start に書かれているように git remote の設定を行います。
% mkdir -p /path/to/anyware/repo % cd /path/to/anyware/repo % git init -q % git remote add origin https://github.com/my/repo
go mod init にプロジェクトを指定して初期化します。
% go mod init github.com/my/repo go: creating new go.mod: module github.com/my/repo
初期化すると go.mod ファイルが作成されますので確認してみます。
% cat go.mod module github.com/my/repo go 1.14
下記のようなコードを作ります。
% cat <<EOF > hello.go package main import ( "fmt" "rsc.io/quote" ) func main() { fmt.Println(quote.Hello()) } EOF
ビルドして実行します。
% go build -o hello go: finding module for package rsc.io/quote go: found rsc.io/quote in rsc.io/quote v1.5.2 % ./hello こんにちは世界。
ビルド時に自動的にコードが使っているパッケージをダウンロードし、go.mod ファイルを更新するので、go.mod ファイルの中身を再度確認してみます。
% cat go.mod module github.com/my/repo go 1.14 require rsc.io/quote v1.5.2
コメント