golang のtoolの管理に関して
開発をしているとソース内では使用しないが、便利なtoolをgo get
しバージョンの管理をしておきたいことがある。
例えば、golang.org/x/tools/cmd/stringer
など。
しかし、go module
で依存関係を管理している場合、ソースないで使用されていないライブラリは管理できないという制約がある。これをtools.go
を作成する方法で回避できるのでメモしておく。
// +build tools package tools import _ "golang.org/x/tools/cmd/stringer"
build時に今回作成したtoolsファイルが除外される様にbuild constraintsを使用している。
これを使用することで、build -tags=hoge
で切り替えを行うことが可能であるが、これを指定しないので、binaryにはtoolsのファイルは含まれない事になる。