В настоящее время я разрабатываю небольшое приложение Go и хочу установить определенную переменную (например, Version, GitCommit, BuildID... и т. д.) во время сборки или выполнения (с go build
или go run
) с помощью параметра -ldflags
.
Так как в моей компании есть несколько проектов с одинаковой базой, я решил вынести код с этими переменными в отдельный "информационный" модуль, который можно было бы импортировать в каждый проект.
Вот моя проблема, скажем, я запускаю приложение следующим образом:
go run -ldflags "-X git.mycompany.com/utils/info.Version=1.0.0" app.go
Это работает хорошо, и переменная установлена правильно, хотя переменная не является частью «основного» приложения, а находится в зависимости.
Затем я решил развернуть приложение, поэтому использовал новый инструмент dep
для создания папки vendor
. Поэтому зависимость "info" теперь находится в: vendor/git.mycompany.com/utils/info
Теперь, когда я запускаю команду ту же, что и выше, указанная переменная (Version
) больше не устанавливается.
Я что-то упустил здесь? Как только я удаляю папку поставщика, все снова работает нормально. Похоже, что эта папка поставщика конфликтует с опцией -ldflags
или чем-то еще.
Заранее спасибо!