Подпроектные зависимости в штанах

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

У меня есть проект Pants, который должен быть самодостаточным. Имеет свой pants а также pants.ini файл как и все BUILD файлы, содержащие пути относительно корня проекта (где pants.ini является). Этот проект размещен на GitHub.

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

path
├── pants
├── pants.ini
├── projectA
│   └── src
│       └── python
|           └── main
│               ├── BUILD
│               └── main.py
└── projectB
    ├── pants
    ├── pants.ini
    └── src
        └── python
            ├── libA
            |   ├── BUILD
            |   └── lib.py
            └── libB
                ├── BUILD
                └── lib.py

Естественно, я стремлюсь использовать цели проекта BUB из ProjectA, поэтому в ProjectA BUILD У меня есть что-то в этом роде:

dependencies = [ "projectB/src/python:libA" ]

Это все хорошо. Однако, так как projectB является независимым проектом, это src/python/libA/BUILD Файл содержит что-то вроде:

dependencies = [ "src/python:libB" ]

Из-за этого, projectB действительно может быть построен независимо. Тем не менее, при попытке построить projectA цели сборки из поиска projectB, начиная с корня проекта projectA, например:

Exception Message: libB was not found in BUILD files from path/src/python

Есть ли в брючном файле какой-либо чистый способ обработки этих зависимостей подпроекта? Или я был бы вынужден изменить файлы BUILD подпроекта, чтобы они соответствовали разметке моего проекта (что делает проект не подлежащим сборке независимо)?

Любые решения или советы приветствуются!

2 ответа

Решение

Вот и получается, что функциональность, на которую я надеялся, не поддерживалась брюками. Сначала я последовал совету Yi Cheng в комментариях и создал скрипт для замены всех правил BUILD подпроекта теми, которые относятся к корневому проекту. Этот скрипт можно найти здесь: https://github.com/brandonio21/pants-subproject-prep

Однако сценарий был довольно ограничен и далек от работоспособного решения. С тех пор я сменил штаны вверх по течению, чтобы поддержать поведение. PR был здесь: https://github.com/pantsbuild/pants/pull/4088

Теперь, если у вас есть подпроект в другом проекте, то создайте корневой проект с помощью --subproject-roots=["path/to/subproject1_root", "path/to/subproject2_root"] (Или указав опцию в pants.ini) создаст подпроект из правильного корня подпроекта

Это все хорошо. Однако, так как projectA является независимым проектом, его файл src/python/libA/BUILD содержит что-то вроде:

зависимости = ["src / python: libB"]

iiuc src/python:libB должно быть projectB/src/python:libB, Все целевые пути в репо должны быть относительно корня сборки, который path в вашем примере.

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