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初始化 去国防部供应商
您将看到代码无法编译。
答案 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