如何使用go mod复制非执行文件

时间:2019-02-15 20:08:39

标签: go

go mod在供应商目录中不包含非go代码。

当前,我们正在使用go-oracle和go-oracle来连接数据库。我们正在计划使用docker,因此有了使用go模块对项目进行版本化的想法。但是由于go-oracle的子文件夹带有C代码,因此不会从go在pkg文件夹中创建的mod目录中复制过来。有没有办法添加非执行代码?我们确实尝试使用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)
}

进入mod初始化 去国防部供应商

您将看到代码无法编译。

1 个答案:

答案 0 :(得分:0)

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

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

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

gopkg.in/goracle.v2内提取了包括./vendor/goracle.v2/在内的必需依赖项。然后,我可以使用

来构建“项目”
go build main.go