nehmen sich an, ich habe ein Paket mypackage
die Build()
ein Verfahren, beispielsweise aussetzt, die eine konkrete Struktur von einer Dritten Bibliothek ausgesetzt gibt, lassen Sie sich thirdpartypackage
Golang Anbieter Paket mit verkauften Unterpaketen
genannt So zum Beispiel :
package mypackage
import tpp "github.com/thirdpartycompany/thirdpartypackage"
func Build() *tpp.SharedStruct{
//...implementation
}
Das Paket, das SharedStruct
aussetzt innerhalb mypackage
weiterverkauft, weil ich es verteilen wollen und das Paket unabhängig zu machen.
Jetzt, nach mypackage
in einem anderen Projekt zu importieren und mit thirdpartypackage
in meinen Tests (Ich brauche es einige Integrationstests zu machen), ich sehe die folgenden Fehler:
nicht XXXX verwenden (Typ „GitHub. com/mycompany/mymainproject/vendor/github.com/mycompany/meinpackage/vendor/github.com/thirdcompany/thirdpartypackage-go ".Token) als typ" github.com/empatica/mycompany/vendor/github.com/thirdcompany/ dritypartypackage "
Grundsätzlich unterscheidet der Compiler das herstellereigene Third-Party-Paket in meiner Bibliothek und das vendored-Paket, das ich in meinen m ein Projekt.
Gibt es Möglichkeiten, dieses Problem zu lösen (die nicht die herstellerabhängigen Abhängigkeiten aus meiner Bibliothek entfernen, wie vorgeschlagen here)? Oder ich vermisse etwas?
Danke!
Vendoring funktioniert gut für Befehle und weniger gut für einzelne Pakete ... – Volker
Können Sie geben Sie Ihre genaue Verzeichnisstruktur Ihr Punkt ist nicht klar –
Dies ist der Grund, warum die meisten Verkäufer-Tool das Händlerverzeichnis abflachen. Govendor macht das standardmäßig, ich bin mir nicht sicher, ob es andere Tools von Anbietern gibt. Das Paradigma, das ich für unsere zum Importieren bestimmten Bibliotheken (im Gegensatz zu Apps selbst) verwendet habe, ist das Hinzufügen von '/ vendor/* /' zu unserem '.gitignore'. Dies ignoriert Unterordner in '/ vendor /', aber keine Dateien (wie 'vendor.json', für govendor). Govendor behandelt dann elegant die Abflachung der Abhängigkeitsstruktur, und Ihr Fehler verschwindet, da beide Pakete jetzt denselben vollqualifizierten Importpfad für das Paket der Struktur verwenden. – Kaedys