go.modのExcludeディレクティブ

go.modのexcludeディレクティブを使用して特定のモジュールバージョンの使用を防ぐ方法を学びます。バージョンを除外するタイミングと依存関係解決への影響を理解します。

Directives

詳細な説明

Excludeディレクティブ

excludeディレクティブはモジュールの特定バージョンがビルドで使用されることを防ぎます。Goの依存関係リゾルバーは除外されたバージョンをスキップし、代わりに次の利用可能なバージョンを選択します。

構文

exclude github.com/example/lib v1.2.3

Excludeの動作

依存関係解決中に除外されたバージョンに遭遇した場合:

  1. その特定バージョンを完全にスキップ
  2. 除外されていない次のより高いバージョンを選択
  3. より高いバージョンが存在しない場合、ビルドが失敗

Exclude vs Replace

機能 exclude replace
目的 バージョンをスキップ 別のソースにリダイレクト
効果 次の利用可能なバージョンを使用 指定された置換を使用

制限事項

  • メインモジュールでのみ適用
  • バージョン範囲を除外できない — 各バージョンを個別にリストする必要がある
  • 実際にはあまり使用されない — replaceretractがほとんどのケースをカバー

ユースケース

Excludeディレクティブは、推移的依存関係に既知の不良バージョンがあり、それを引き込む直接依存関係を簡単にアップグレードできない場合に便利です。セキュリティチームは脆弱なバージョンを即座にブロックするためにexcludeを使用します。

試してみる — go.mod Formatter

フルツールを開く