英文:
How could go module auto pull the latest version of dependency instead of assign a specific tag
问题
通常我会标记依赖项并在go.mod文件中进行引用,例如:
require (
private-gitlab.com/domain/common v1.0
)
每当我更新private-gitlab.com/domain/common时,我会给它分配一个新的标记,比如v1.1,然后更改要求:
require (
private-gitlab.com/domain/common v1.1
)
一旦应用了微服务架构,有多个微服务需要这个依赖项,因此我需要将它们的标记从v1.0更改为v1.1。
Go模块是否支持latest/snapshot标记(类似于Java Maven的snapshot),以便自动检测和拉取依赖项的最新版本,例如:
require (
private-gitlab.com/domain/common qa@latest
)
英文:
In general I tag the dependency and require it in go.mod file, for example:
require (
private-gitlab.com/domain/common v1.0
)
Whenever I update private-gitlab.com/domain/common, I assign a new tag to it such as v1.1, then change the requirement
require (
private-gitlab.com/domain/common v1.1
)
Once apply microservices architecture, there are multiple microservices require this dependency, so that I should change their tags from v1.0 to v1.1
Does go module support latest/snapshot tag (something like java maven snapshot) so that it would auto detect and pull the latest version of dependency, like
require (
private-gitlab.com/domain/common qa@latest
)
答案1
得分: 4
Go的模块系统应该提供可复现的构建。因此,如果有新版本可用,go
工具在不经用户同意的情况下不能随意从一个构建中获取新版本。
用户必须显式地更新依赖项,例如通过运行:
go get example.com/theirmodule@latest
如果您想查看是否有任何有更新(新版本)的依赖项,可以运行:
go list -m -u all
如果您想更新您的模块的所有直接和间接依赖项(不包括测试依赖项),可以运行:
go get -u ./...
要更新所有直接和间接依赖项,包括测试依赖项,可以运行:
go get -u -t ./...
英文:
Go's module system ought to provide reproducible builds. So without the user's consent, the go
tool cannot just fetch a newer version arbitrarily from one build to another if a newer version is available.
The user has to update the dependencies explicitly, e.g. by running:
go get example.com/theirmodule@latest
If you want to see if there are any dependencies that have updates (newer versions), you may run:
go list -m -u all
If you want to update all direct and indirect dependencies of your module (excluding test dependencies), you may run:
go get -u ./...
To update all direct and indirect dependencies including test dependencies, you may run:
go get -u -t ./...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论