簡體   English   中英

使用ldflags設置Go變量與vendor文件夾沖突

[英]Set Go variable with ldflags conflicts with vendor folder

我正在開發一個小型Go應用程序,我想在構建或運行時(使用go buildgo run )通過使用-ldflags選項設置特定變量(如Version,GitCommit,BuildID等)。

因為在我的公司中我們有幾個具有相同基礎的項目,所以我決定在單獨的“信息”模塊中提取帶有這些變量的代碼,該模塊可以在每個項目中導入。

這是我的問題,說我正在運行這樣的應用程序:

go run -ldflags "-X git.mycompany.com/utils/info.Version=1.0.0" app.go

這很有效,即使變量不是“主”應用程序的一部分而是依賴項,變量也是正確設置的。

然后我決定部署應用程序,因此我使用新的dep工具生成vendor文件夾。 因此,“info”依賴項現在位於: vendor/git.mycompany.com/utils/info

現在當我運行上面相同的命令時,不再設置所述變量( Version )。

我在這里錯過了什么嗎? 一旦我刪除供應商文件夾,一切正常。 這就像這個供應商文件夾與-ldflags選項或其他東西沖突。

提前致謝!

我們遇到了完全相同的問題,經過大量研究,我們在對GitHub問題的評論中偶然發現了解決方案: cmd / link:-X不適用於已售出的軟件包

解決方案:應指定相對於$GOPATH完整路徑名。

它在開發git.mycompany.com/utils/infogit.mycompany.com/utils/info因為完整路徑是正確的。
它不適用於出售的依賴項,因為$GOPATH完整路徑就像git.mycompany.com/name-of/package/vendor/git.mycompany.com/utils/info.Version=1.0.0

不幸的是,似乎沒有關於此的文件(有關該問題的進一步信息),但Dave Cheney在評論中指出:

這是實現售賣的語言方式的副作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM