We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
https://wweir.cc/post/golang-项目组织形式的演进/
The text was updated successfully, but these errors were encountered:
如果一个项目用到了某使用 go modules 进行版本管理的包,go build 会下载该包 modules 配置文件中提及的所有的包,即使在我们的代码依赖树上用不到该包。但却不会使用该第三方包 go.mod 文件中的定义好的地址替换规则,需要在我们自己的项目中自行定义。
硬是没看懂这话。老铁解释下
Sorry, something went wrong.
@Hyvi 举个例子:
我们自己的 A 项目依赖第三方项目 B, A、B 项目都使用 go modules 作为依赖管理方式。
B 中功能较多,我们只用到其中一小部分,这部分只用到标准库,没有任何其它依赖。但是 B 中其他部分复杂度较高,依赖了一大票 golang.org/x/net 底下的包。B 项目管理者为了解决拉包问题,在 go.mod 中把 golang.org/x/net replace 为 github.com/golang/net。
golang.org/x/net
github.com/golang/net
下面,问题来了。go mod 分析依赖时,会找到 B,同时会选择拉取 B 的 go.sum 中的依赖包,包括我们本不需要的 golang.org/x/net。但是,go mod 却不会使用 B 的 go.mod 中定义的 replace 规则,还是从 golang.org 拉包,从而莫名撞墙
如果一个项目用到了某使用 go modules 进行版本管理的第三方包,go build 会下载该包 modules 配置文件(即go.mod)中提及的所有的包,即使在我们的代码依赖树上用不到该包,也不会使用该包 go.mod 文件中的定义好的地址替换规则,需要在我们自己的项目中自行定义。
我理解了,修改下原来语句,个人觉得更好些。 非常感谢
@Hyvi 多谢,我更新一下文章
No branches or pull requests
https://wweir.cc/post/golang-项目组织形式的演进/
The text was updated successfully, but these errors were encountered: