【问题标题】:how to copy non-go files in with go mod如何使用 go mod 复制非 go 文件
【发布时间】:2019-02-16 07:55:55
【问题描述】:

go mod 不包含 vendor 目录中的 non-go 代码。

目前我们正在使用 go 和 go-oracle 连接到数据库。我们正计划使用 docker,所以我们想到了使用 go 模块对我们的项目进行版本化的想法。但是由于 go-oracle 具有包含 C 代码的子文件夹,因此不会从 go 在 pkg 文件夹中创建的 mod 目录中复制它。有没有办法我们也可以添加非 go 代码?我们确实尝试使用https://github.com/goware/modvendor,但它没有复制非执行代码。除非我们没有正确使用它。

package main

import (
  "fmt"

  "github.com/jmoiron/sqlx"
  log "github.com/sirupsen/logrus"
  goracle "gopkg.in/goracle.v2"
)

const connectionString = "some connection string"

func main() {
  fmt.Print("Inside main")
  db, err := sqlx.Connect("goracle", connectionString)
  if err != nil {
    log.Infof("Could not connect %v%", err)
  } else {
    db.Query("select 1 from dual")
  }

  fmt.Println(goracle.DriverName)
}

进入模组初始化 去模组供应商

你会看到代码不会编译。

【问题讨论】:

    标签: go


    【解决方案1】:

    我相信您的问题是您没有为您的包裹设置module path。以下是我构建代码的操作的详细信息:

    在我的/tmp 文件夹中创建了一个测试包gomod-test 后,我运行了:

    go mod init tmp/gomod-test // <-- this is the module path
    go mod vendor
    

    它引入了所需的依赖项,包括./vendor/goracle.v2/ 内部的gopkg.in/goracle.v2。然后我能够使用

    构建“项目”
    go build main.go
    

    【讨论】:

    • 谢谢,但我已经解决了这个问题。 modvendor 仅适用于 Linux 操作系统。我必须修改代码才能让它在 Windows 上运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多