首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化主依赖的传递依赖关系

简化主依赖的传递依赖关系
EN

Stack Overflow用户
提问于 2018-10-02 01:30:53
回答 1查看 547关注 0票数 6

我一直在通过滑行将现有的项目从使用独立依赖项转换为使用Go 1.11.x 模块支持。但我在一个项目中遇到了一个特殊情况,使用的模块是我无法解决的。

内部项目'foo‘通过"go mod供应商“获得了它的依赖关系:

代码语言:javascript
复制
projects/src/foo/
    main.go
    vendor/
        ...

这在内部构建该项目时非常有用,因为非go开发人员可以将项目克隆到任何位置并构建它,而无需外部代理访问来下载依赖项。

现在,我正在尝试允许项目“bar”使用库“foo”构建一个工具。

代码语言:javascript
复制
package bar

import "internal.com/project/foo"

"go.mod“文件只包含:

代码语言:javascript
复制
module internal.com/project/bar

require internal.com/project/foo v0.0.0-...

我将通过以下方式提供供应商:

代码语言:javascript
复制
go module vendor

我通过:

代码语言:javascript
复制
go build -mod=vendor

我看到的是'foo‘将从内部git中克隆,它的所有依赖项都将从它们的远程git源文件中下载,并且我的'go.sum’文件将被更新为所有的临时依赖项。但是我真正想要的是只从我的内部网络中获取'foo‘,并让它平缓依赖关系。理想情况下,不应该有外部http请求。

这有可能吗?在直接构建项目"foo“时,"-mod=vendor”标志非常有用。但它似乎不适用于这里,因为项目“酒吧”不想供应商。它希望得到一个主要的依赖项,那就是它。Go模块支持似乎并不关心扁平化的临时依赖关系。

以前,当使用glide作为包管理器时,它会从内部的git中获取'foo‘,然后将其所有依赖项都压平到我的供应商目录中。

最初作为https://groups.google.com/d/topic/golang-nuts/W8M4nOl54KQ/discussion发布,没有回复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-06 08:28:55

它只是目前不这样工作,只使用顶级供应商目录。来自模块帮助

若要使用主模块的顶级供应商目录进行构建以满足依赖关系(禁用常用网络源和本地缓存的使用),请使用“go build = directory”。注意,只使用主模块的顶级供应商目录;其他位置的供应商目录仍然被忽略。

对于这个特定的用例,我建议等到go modules成熟。

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

https://stackoverflow.com/questions/52600915

复制
相关文章

相似问题

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