Heim >Backend-Entwicklung >Golang >Wie bette ich eine Build-Time-Befehlsabhängigkeit (z. B. „github.com/aprice/embed/cmd/embed') in Go-Module ein?

Wie bette ich eine Build-Time-Befehlsabhängigkeit (z. B. „github.com/aprice/embed/cmd/embed') in Go-Module ein?

Linda Hamilton
Linda HamiltonOriginal
2024-11-26 02:31:13444Durchsuche

How to Embed a Build-Time Command Dependency (e.g., `github.com/aprice/embed/cmd/embed`) in Go Modules?

Einbetten von Befehlsabhängigkeiten in Go-Module

Einführung

Go-Module, eingeführt in Go 1.11, bieten Abhängigkeitsmanagement für Go Projekte. Neben Laufzeitabhängigkeiten müssen Benutzer möglicherweise Go-Module während des Build-Prozesses verwenden, insbesondere für Tools, die während des Go-Generate-Befehls ausgeführt werden.

Frage

Wie kann ich integrieren eine bestimmte Build-Abhängigkeit wie github.com/aprice/embed/cmd/embed erstellen und diese aus einem bestimmten Verzeichnis ausführen? Ist Go das geeignete Tool für diese Aufgabe?

Antwort

Mit den folgenden Methoden können Sie eine Befehlsabhängigkeit in Go-Module einbetten:

Erstellen eines „Tools“-Pakets

  1. Erstellen ein Tools-Verzeichnis in Ihrem Projekt:

    mkdir -p internal/tools
  2. Platzieren Sie das Tools-Paket in diesem Verzeichnis, wie unten gezeigt:
// internal/tools/tools.go
// +build tools

package tools

import (
    _ "github.com/UnnoTed/fileb0x"
)
  1. Beachten Sie, dass der Build Tag gibt an, wann die Datei kompiliert werden soll und kann an die Anforderungen Ihres Projekts angepasst werden.

Aktualisierung go.mod

  1. Führen Sie go mod Tidy aus, um Ihre go.mod-Datei zu aktualisieren und die Abhängigkeit einzuschließen.
  2. Wenn dies fehlschlägt, versuchen Sie, zusätzliche Befehle wie go get, go generieren, oder gehen installieren.

Vendoring

  1. Führen Sie go mod seller aus, um den Quellcode für alle in go.mod aufgeführten Abhängigkeiten herunterzuladen.
  2. Ändern Sie Ihre Build-Befehle (z. B. go build, go generic), um das Flag -mod=vendor einzuschließen. Dadurch wird sichergestellt, dass Ihr Projekt die vom Anbieter bereitgestellten Abhängigkeiten verwendet.

Zusätzliche Hinweise

  • Wenn Sie auf eine Fehlermeldung stoßen, die besagt, dass Ihr Programm kein importierbares Paket ist , erstellen Sie ein Tools-Paket und importieren Sie die Abhängigkeit dort.
  • Vendoring ist entscheidend für die Nutzung des Modulcaches und die Vermeidung von Abhängigkeiten Konflikte.

Das obige ist der detaillierte Inhalt vonWie bette ich eine Build-Time-Befehlsabhängigkeit (z. B. „github.com/aprice/embed/cmd/embed') in Go-Module ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn