首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置具有Go标志的Go变量与供应商文件夹冲突

设置具有Go标志的Go变量与供应商文件夹冲突
EN

Stack Overflow用户
提问于 2018-06-01 16:07:04
回答 1查看 813关注 0票数 3

我目前正在开发一个小型Go应用程序,我希望设置一个特定的变量(比如Version,GitCommit,BuildID...etc)。在构建或运行时(使用go buildgo run)使用-ldflags选项。

因为在我的公司中,我们有几个基础相同的项目,所以我决定在一个单独的"info“模块中提取这些变量的代码,这个模块可以在每个项目中导入。

我的问题是,假设我像这样运行这个应用程序:

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选项或其他东西相冲突。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-10-23 13:16:22

我们也遇到了同样的问题,经过大量的研究,我们偶然发现了评论 to GitHub问题的解决方案:cmd/link:-X不适用于销售包

解决方案:应该指定完整的路径名,相对于$GOPATH

它在开发git.mycompany.com/utils/info时工作,因为完整的路径是正确的。

因为从$GOPATH的完整路径类似于git.mycompany.com/name-of/package/vendor/git.mycompany.com/utils/info.Version=1.0.0,所以它不适用于临时依赖项

不幸的是,似乎没有关于这一问题的任何文件(关于这个问题的更多信息),但正如Dave在评论中指出的那样:

这是语言实现方式的副作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50647339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档