golangバージョン管理ツールGO111MODULE

go1.11バージョンの前に、言語は、あなたが管理するために行きたいパックのみ達成するために、サードパーティのライブラリに依存することができ、例えばVendor,GoVendor,GoDep,Dep,Glideように、と。

1.ターンGO111MODULE

環境変数  GO111MODULE モジュールのサポートを有効または無効にするには、それは3つの値があります。off、、 onautoデフォルトです  auto

  • GO111MODULE=off いいえモジュールのサポート、GOPATHとベンダーのフォルダからパッケージを探しに行くん。
  • GO111MODULE=on モジュールのサポート、行くだけ基づき、GOPATHとベンダーのフォルダを無視  go.mod 依存関係をダウンロードしてください。
  • GO111MODULE=auto では  $GOPATH/src 外とルートディレクトリ持つ  go.mod オープンモジュールがサポートするファイルを。

モジュールを使用する場合、GOPATH それは無意味であるが、それはまだ依存関係が中に保存されているダウンロードする  $GOPATH/src/mod だろう  go install 結果を配置すること  $GOPATH/bin に。

2.モジュールを定義します。

モジュールのルートディレクトリとそのすべてのサブディレクトリのパッケージビルディング・ブロック、のルートディレクトリに存在する  go.mod ファイル、サブディレクトリは、親ディレクトリに向かって移動する、ディレクトリは主に発見された  go.mod ファイルを。

パス・モジュールを導入することなく、他のサブディレクトリプレフィックス導入路において、ルートディレクトリ経路モジュールを指します。

go.mod 最初の行は、その行は、モジュールとみなし、モジュールパスを定義します。

go.mod ファイルは、次のモジュールの長さを定義するために使用され、現在のバージョン依存性に応じて、また交換に依存する依存関係を除外してもよいです。

モジュールexample.com/のMは

(必要
    golang.org / X /テキストV0を。3.0 
    gopkg。 /yaml.v2のV2。1.0  

(交換
    golang.org / X /テキスト=> github.com/golang/textのV0を。3.0 

ファイルを記述することなく使用することができる  go mod init example.com/m 生成するために、  go.mod 最初の行を、ファイルの残りの部分はの実装で心配する必要は  go buildgo testgo list 自動的にコマンド必要依存生成  require ステートメント。

公式には依存関係がクリーンである保ち、このファイルの定期的なメンテナンスをお勧めします。国内のユーザーのために、手動でこの文書を維持するためにあなたがする必要があるため、避けられない  golang.org/x/text 交換してください github.com/golang/text  。

3.関連コマンド

listコマンドを行きます

go list -m あなたは、現在のバージョンと依存関係を表示することができます

modコマンドを行きます

このサブコマンドを処理するために使用される  go.mod ファイルを。

ローカルキャッシュにダウンロードモジュールダウンロード
ツールやスクリプトから編集編集go.modを
グラフ化、印刷モジュールの要件のグラフは、
INIT現在のディレクトリに新しいモジュールを初期化
欠落している整頓追加し、未使用のモジュールを削除
依存関係のベンダーメイクvendoredコピーを
依存性が期待されている内容を確認する検証
なぜなぜパッケージを説明しますまたはモジュールが必要とされています

コマンドを取りに行きます

依存関係をアップグレードし、ダウングレードのために、特定のバージョンに依存を取得します。自動的に修正することができる  go.mod ファイルは、だけでなく、バージョン番号にも依存するようになることがあります。 go.mod 使用  exclude ではない、パッケージを除外  go get ダウン。

前とは違って、それは新しいバージョンがあること  go get の最後に追加することができ  @ 、シンボル、バージョンを指定するために使用されます。

それは倉庫がしなければならない必要と  v1.2.0 として、タグ形式を再生する  v1.2 いくつかのゼロは動作しませんとでなければならないセマンティック、として  v 接頭辞のバージョン番号。

行くGET github.com/gorilla/ MUX#はタグの最新の一致
GoはGET github.com/gorilla/ 上記と同じ#@ MUX最新の
ゴーGET github.com/gorilla/mux@v1を。6.2     #マッチV1。6.2 
ゴーGET github.com/gorilla/mux@e3702bed2#マッチV1。6.2 
ゴーGET github.com/gorilla/ c85619274f5d MUXの#@のc856192の試合を
行くGETマスターブランチ#と一致github.com/gorilla/mux@master

latest 最新のタグに一致します。

v1.2.6 文言のフルバージョン。

v1v1.2 バージョンが最新である場合、プレフィックスと、最新バージョンのマッチング、  1.2.7彼らは一致します  1.2.7

c856192 バージョンハッシュプレフィックス、支店名、中に何の意味的なラベル  go.mod 書き込みの規則では使用されません  v0.0.0-20180517173623-c85619274f5d、また、ダミーのバージョンと呼ばれます。

go get バージョン番号はファジーマッチングすることができますが、  go.mod 文書が唯一のフルバージョンを反映している、つまり  v1.2.0v0.0.0-20180517173623-c85619274f5d除いて、このような長い手書きのバージョンを必要としない、と  go get 以上  go mod -require のフルバージョン番号はファジー・マッチングすることができ、それが書かれたにマッチします  go.mod ファイル。

コマンドを構築して行きます

go build -getmode=vendor オープンモジュールの場合には、これで私たちは、ベンダーの使用の時代に戻ることができ、サポートしています。

 

参考:

1.  golang 1.11モジュールとプロジェクトのバージョン管理を行います

2. ゴー1.11モジュールレイダース

おすすめ

転載: www.cnblogs.com/embedded-linux/p/11616183.html