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 или зависимости.

Другие вопросы по тегам