如何将依赖项包自动添加到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导入”在这里不是一个有效的论点。你没有让你的生活更轻松。