为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 构建约束随机

Golang 构建约束随机

Go
慕沐林林 2021-08-23 16:04:37
我在头中有两个具有不同构建约束的 go 文件。constants_production.go:// +build production,!stagingpackage mainconst (  URL               = "production")constants_staging.go:// +build staging,!productionpackage mainconst (  URL               = "staging")main.go:package mainfunc main() {  fmt.Println(URL)}当我执行 a 时go install -tags "staging",有时会打印production; 有时,它会打印staging. 同样,当我这样做时go install -tags "production",...如何在每次构建时获得一致的输出?当我将暂存指定为构建标志时,如何使其打印暂存?当我将生产指定为构建标志时,如何使其打印生产?我在这里做错了吗?
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

go build并且go install如果它看起来没有任何变化,则不会重建包(二进制)——而且它对命令行构建标签的变化不敏感。


看到这一点的一种方法是-v在构建包时添加并打印它们:


$ go install -v -tags "staging"

my/server

$ go install -v -tags "production"

(no output)

您可以通过添加-a标志来强制重建,这往往是矫枉过正:


$ go install -a -v -tags "production"

my/server

...或者在构建之前接触服务器源文件:


$ touch main.go

$ go install -a -tags "staging"

...或在构建之前手动删除二进制文件:


$ rm .../bin/server

$ go install -a -tags "production"


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信