Я работаю над двумя проектами golang на основе github, где один проект зависит от другого.
Допустим, у меня есть проект A (github.com/A), зависящий от проекта B (github.com/B). Итак, на данный момент я вношу изменения в проект B, отправляю код и выполняю go get github.com/B
в проекте A, чтобы получить последний код проекта B.
Эта процедура отнимает много времени и мне тоже не подходит. Я думал, что изменяющиеся файлы проекта B в местоположении GO_PATH, но, похоже, загруженные проекты в GO_PATH доступны только для чтения.
Есть ли лучший способ сделать это?
Вам придется автоматизировать его с помощью небольшого скрипта. Я бы предложил использовать makefile и добавить команду для получения последней версии вашей зависимости, поэтому, когда вы говорите make build
, она обновляется каждый раз перед сборкой.
@Jay Согласен, может понадобиться либо Makefile
, либо что-то вроде Bazel
.
Есть лучший способ: директивой «replace» в go.mod вы бы заменили github.com/B на путь в локальной файловой системе проверенного B. Это, очевидно, только во время разработки. См. github.com/golang/go/wiki/…
Если ваша версия golang 1.18+, вы можете использовать функцию рабочих областей, чтобы улучшить свой опыт разработки.
Давайте используем ваши примеры, поэтому у нас есть github.com/A
, который зависит от github.com/B
.
workspace
cd
в workspace
, затем go mod init ./A && go work use ./B
workspace
беге go run github.com/A
В результате в вашей локальной среде разработки вы всегда будете использовать свою локальную версию github.com/B
, поэтому нет необходимости в удаленной синхронизации.
Если вы используете предыдущую версию go, я думаю, вам лучше всего написать несколько сценариев, чтобы автоматизировать этот процесс.
Отвечает ли это на ваш вопрос? Всегда требуйте последнюю версию зависимости в go.mod