如何将依赖项包自动添加到go.mod
我用几十个第三方导入的软件包修改了一个,但我保持了基本结构不变,如下所示:如何将依赖项包自动添加到go.mod,go,go-modules,Go,Go Modules,我用几十个第三方导入的软件包修改了一个,但我保持了基本结构不变,如下所示: . ├── config │ ├── config.json │ └── mysql.sql ├── gowebapp.go ├── LICENSE ├── README.md ├── static ├── template │ ├── about │ │ └── about.tmpl │ ├── base.tmpl └── vendor └── app ├── contr
.
├── config
│ ├── config.json
│ └── mysql.sql
├── gowebapp.go
├── LICENSE
├── README.md
├── static
├── template
│ ├── about
│ │ └── about.tmpl
│ ├── base.tmpl
└── vendor
└── app
├── controller
│ ├── about.go
│ ├── error.go
│ ├── index.go
│ ├── login.go
│ ├── notepad.go
│ ├── register.go
│ └── static.go
├── model
│ ├── model.go
│ ├── note.go
│ └── user.go
├── route
│ ├── middleware
│ │ ├── acl
│ │ │ └── acl.go
│ │ ├── httprouterwrapper
│ │ │ └── httprouterwrapper.go
│ │ ├── logrequest
│ │ │ └── logrequest.go
│ │ └── pprofhandler
│ │ └── pprofhandler.go
│ └── route.go
└── shared
├── database
│ └── database.go
├── email
│ └── email.go
├── jsonconfig
│ └── jsonconfig.go
├── passhash
│ ├── passhash.go
│ └── passhash_test.go
├── recaptcha
│ └── recaptcha.go
├── server
│ └── server.go
├── session
│ └── session.go
└── view
├── plugin
│ ├── noescape.go
│ ├── prettytime.go
│ └── taghelper.go
└── view.go
现在我想使用go模块使项目可移植
main.go导入如下所示:
package main
import (
"encoding/json"
"log"
"os"
"runtime"
"app/route"
"app/shared/database"
"app/shared/email"
"app/shared/jsonconfig"
"app/shared/recaptcha"
"app/shared/server"
"app/shared/session"
"app/shared/view"
"app/shared/view/plugin"
)
正如您所看到的,代码主要位于vendor/app
文件夹中
我已经添加了其他几个包
问题是手动将包添加到go.mod是如此乏味,毕竟我可能会错过一些导入
所以我想知道是否有一些自动的技巧来获取依赖项go.mod 使用
go mod init module path
初始化模块,这将创建go.mod
文件。使用go Build
构建项目。它自动将所有依赖项以传递方式添加到go.mod
不涉及任何手动步骤。
go
工具为您提供一切。当然,如果自动选择的版本不符合您的需要/意图,您可以编辑go.mod
文件并“微调”包含的版本。查看默认情况下是如何完成的。我得到了以下错误:构建项目J1:无法加载应用程序/路由:格式错误的模块路径“app/route”:第一个路径元素中缺少点
然后首先修复该错误。您必须使用完整导入路径,并以模块路径为前缀。例如,如果您的模块具有路径github.com/joe
,并且您的模块包含app/route
文件夹,则必须将其导入为github.com/joe/app/route
,而不仅仅是app/route
。实际上app/route
位于/home/me/go/src/proj1/vendor/app/route
中。那么,我应该如何修改导入以使其有用呢?供应商
是特殊的,只有当您通过-mod=vendor
时才使用它,但之后您的所有DEP都应该是供应商。决定你想要什么。如果您不想出售所有DEP,请将app/route
移动到项目根目录或其他可以正确导入的模块。要使用磁盘上的文件夹,请参阅,您可以尝试go mod vendor
,它将所有依赖项下载到vendor
文件夹中。但你的设置似乎自找麻烦。“不喜欢github导入”在这里不是一个有效的论点。你没有让你的生活更轻松。