Goの公式Dockerで自動的に使用しているパッケージが入ったのでなんで?って思ってずーっと調べてた。
どんな大掛かりなからくりなんだろうと思って調べていたが、結局対象のGoアプリディレクトリで
$ go get -v -d
を使うと使用するパッケージが自動で入るようだった。
フラグつけるだけだったとは・・・。
もうちょっと深く調べた所、
-vはgo getのフラグには無く、go buildのフラグでした。
-v
print the names of packages as they are compiled.
(go buildのフラグはgo getでも使える)
go get [-d] [-f] [-fix] [-t] [-u] [build flags] [packages]
go buildで指定すると使用している外部パッケージが表示された。
buildの場合、パッケージのダウンロードはされなかった。
でも、「go getの時に使うと自動で必要パッケージダウンロードするよ〜」みたいなことは書いてないな〜
ちなみに-dはダウンロードだけでインストールはしないというフラグ。
今まで一つ一つ使用するパッケージを$ go get package_name
としていたのでこれからはこれ使おうと思います。
2015/07/18追記
package main
が書かれているファイルがある階層で
$ go get
を実行するだけでいいようです。
-v
オプションはログを表示するオプションでした。
また、package main
が書かれているファイルがカレントに無い場合、
(カレントより深い階層にpackage main
が書かれているファイルがある場合)
$ go get ./...
を実行するとすべてのパッケージが入ります。
ログを表示する場合は$ go get -v ./...
かな。