go_remote_library использование в штаны
В настоящее время я пытаюсь использовать цель go_remote_library??, пакет??, плагин?? в штаны. Реальный простой вопрос, здесь:
Если в моем коде у меня импорт указан как:
import(
"github.com/golang/groupcache"
)
допустимо ли указывать имя просто "groupcache" вместо полного пути импорта? Вот как выглядит мой файл BUILD:
go_remote_library(name="groupcache",
rev="d781998583680cda80cf61e0b37dd0cd8da2eb52"
)
Я делаю это правильно? Как примечание, есть ли цель Pants, которую я могу использовать, чтобы проверить, что мой файл BUILD действителен? Спасибо!
1 ответ
Вы делаете это правильно. Все цели го - go_remote_library
в этом случае, но также go_library
а также go_binary
- в настоящее время принимает параметр имени, и это должно быть имя каталога, в котором находится файл BUILD. В следующем выпуске брюк (0.0.44) должен быть удален параметр имени, который лишает вас выбора.
Первая линия защиты - это словарь BUILD. За go_remote_library
Вы найдете этот документ.
Что касается тестирования, самый простой тест - это проверка синтаксиса, и для этого он делает свое дело:
./pants list path/to/BUILD:
Обратите внимание на конечную двоеточие, прикрепленное к пути
Это говорит: "Перечислите все цели, определенные в path/to/BUILD
, Здесь :
означает все - его эквивалент *
подстановочный знак в оболочках борна для штанов-мишеней в файлах BUILD.
Если вы хотите проверить больше целей одновременно, вы можете сказать:
./pants list ::
Здесь используется рекурсивный глобус - эквивалент **
в Zsh, и поэтому просит штаны перечислить все цели в репо.
Если синтаксис подтвердится, у вас могут возникнуть более тонкие проблемы, такие как определение go_remote_library
это не указывает на действительный проект GitHub. Эти проблемы появятся только тогда, когда вы попытаетесь сделать больше, чем действовать на метаданные цели, как list
а также depmap
цели делают. Для go_remote_library
Простейший способ проверить это - попытаться разрешить библиотеку:
./pants resolve 3rdparty/go/github.com/bitly/go-simplejson2
Если у вас есть содержимое файла BUILD по этому пути:
go_remote_library(name='go-simplejson2')
Выполнение разрешения не удастся, так как такого репозитория github не существует.
Вы можете сделать аналогичную проверку более высокого уровня с go_library
а также go_binary
цели, вместо того, чтобы работать ./pants compile ...
, Это будет дымить, если вы пропустили все необходимое go_remote_library
Файлы BUILD или зависимости.