如何解决是否可以使用“go mod tidy”清除间接依赖之外的未使用依赖项?
我知道 go mod tidy
的预期行为是通过删除不必要的依赖关系树来修剪依赖关系树,但是我的部分 CI 使用 go-swagger
来生成 swagger JSON
文件。所以,最后。 go mod tidy
将从 go-swagger
文件中删除 go.mod
包,因为它们被列为 //indirect
(它们不直接从源代码中使用)。有解决方法吗?
这是我的 go.mod
文件:
...
require (
github.com/go-openapi/errors v0.20.0 // indirect
github.com/go-openapi/validate v0.20.2 // indirect
github.com/go-swagger/go-swagger v0.26.1 // indirect
github.com/gorilla/mux v1.8.0
github.com/mailru/easyjson v0.7.7 // indirect
github.com/spf13/afero v1.5.1 // indirect
golang.org/x/mod v0.4.1 // indirect
golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d // indirect
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43 // indirect
golang.org/x/tools v0.1.0 // indirect
)
运行 go mod tidy
后,只剩下这个:
github.com/gorilla/mux v1.8.0
但是,我在生产环境中运行的 Makefile 上有以下目标:
$ swagger generate spec -o ./internal/ui/swagger.json
我有点想避免在运行 go get
后在全局 go-swagger
上显式调用 go tidy
。你们对如何解决这个问题有什么建议吗?
解决方法
我怀疑一种解决方法是:
- 在您的项目源 .go 文件之一中明确导入包
github.com/go-swagger/go-swagger/scan
- 定义一个虚拟变量
var _ = scan.Parse
这样,您的来源将直接“使用”github.com/go-swagger/go-swagger
,而不会再被 go mod tidy 修剪。
我会在一个名为 externalTools.go
的 go 文件中这样做,只是为了记住为什么需要这个假导入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。