我目前正在开发一个小型 Go 应用程序,我想通过使用该选项在构建或运行时(使用go build
or )设置特定变量(如 Version、GitCommit、BuildID 等)。go run
-ldflags
因为在我的公司,我们有几个具有相同基础的项目,所以我决定将带有这些变量的代码提取到一个单独的“信息”模块中,该模块可以导入到每个项目中。
这是我的问题,假设我正在运行这样的应用程序:
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
选项或其他东西冲突。
提前致谢!