Как скопировать не-Go файлы в Go мод - PullRequest
0 голосов
/ 15 февраля 2019

go mod не включает не-код go в каталоге vendor.

В настоящее время мы используем go с go-oracle для подключения к базе данных.Мы планируем использовать docker, поэтому мы решили использовать модули go для создания версий нашего проекта.Но поскольку go-oracle имеет подпапки с кодом C, он не копируется из каталога модов, который go создает в папке pkg.Есть ли способ, которым мы могли бы также добавить не Go код?Мы пытались использовать https://github.com/goware/modvendor, но он не копировал код, не являющийся go.Если мы не использовали его правильно.

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 mod init go mod vendor

Вы увидите, что код не скомпилируется.

1 Ответ

0 голосов
/ 15 февраля 2019

Я считаю, что ваша проблема в том, что вы не установили путь к модулю для своего пакета.Подробности о моих действиях по созданию вашего кода приведены ниже:

После создания тестового пакета 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...