当前位置: 首页 > 知识库问答 >
问题:

go vendor 没有复制依赖问题?

羊光辉
2023-11-08
  1. 通过go get 下载了依赖
  2. 通过go mod vendor 将依赖复制到vendor目录下
    问题
    有的依赖在$GOPATH 时存在包的 但是就是没有复制到vendor下
    为什么?

共有3个答案

濮阳赞
2023-11-08

理论上来说是不太可能,来自官方的描述是 https://go.dev/ref/mod#go-mod-vendor

The go mod vendor command constructs a directory named vendor in the main module’s root directory that contains copies of all packages needed to support builds and tests of packages in the main module.

简单的说,执行 go mod vendor 命令之后,编译所需所有依赖都会被放到 vendor 目录中。即如果他人 copy 了你的项目(连着这个目录),即使没有下载任何依赖也应该可以编译。

所以,我建议你可以通过 “能否编译” 来验证依赖是否复制完整,而非单独寻找文件是否存在于 vendor 目录中。

姬博瀚
2023-11-08

你为什么要再进行go mod vendor 操作?go.mod 有这个库吗?,没有肯定不会迁移的

诸葛文博
2023-11-08

已解决 不知道为什么会有这个情况
实际看到在$GOPATH下包的名称多了很多后缀
可能是这个影响的
这个时候需要在go.mod添加一个replace 包名 => 包名+vesion (就是require内容复制下)
然后执行go mod vendor即可

 类似资料:
  • 我是maven的新手。(我已经搜索了几个小时的答案,但没有运气。mvn依赖:复制依赖不能解决我的问题)我需要复制项目的所有依赖项(以jar的形式),如果我的一个jar依赖于另一个工件,也复制该工件。 示例project1 pom。xml: “project1”依赖于project2。人工制品罐子当我使用“mvn依赖项:复制依赖项”时,我得到了project2。人工制品但我没有得到project3。

  • 问题内容: 最近,我一直在研究前一段时间开发的项目中的一些改进,这就是我所发现的。pom文件中的许多依赖项都没有指定版本,但是已经解决了。该项目包含1个根模块和2个子模块。使用了Aggregator模式,这意味着根本没有dependencyManagement部分。上层项目仅聚合了2个模块,仅此而已。子项目并不将其称为父项。他们有不同的父母。我无法理解的是,子项目本身或它们的父项(事实上,它也没有

  • Govendor 是 Golang 的 Vendor 包管理器,方便你管理 Vendor 和 Verdor 包。 特性: 可以采用govendor add/update复制现有的依赖从$GOPATH 如果要忽视vendor/*/,可采用govendor 同步恢复依赖 可直接通过govendor fetch控制器添加新的依赖或者更新现有依赖 可采用govendor migrate 实现系统间迁移 支

  • 我有一个Tycho构建,它为Xtext DSL功能生成eclipse插件。我现在想做一个maven插件,它可以处理DSL文件。问题是要将DSL插件所依赖的工件放入maven插件中,因为这些工件不在maven存储库中。此外,我希望maven插件自动依赖于DSL插件所依赖的相同工件。 我认为创建一个带有依赖项的 über-jar 将是最好的方法。问题是检索 DSL 插件的依赖项并将其复制到一个目录中,

  • 在不讨论原因的情况下,假设有人想要一个老式的Play Framework web服务,并且不想使用依赖注入,也不想依赖Google的Guice。在玩法2.8.x中还可能吗? 有没有一个简单的方法可以让你不去这里就呆在老学校里? 我承认,但不完全理解https://www.playframework.com/documentation/2.4.x/migration24。我认为我的问题与2.7中删除