我对使用pantsbuild不太熟悉,似乎在我的难题周围找不到任何好的问题、答案或文档。在
我有一个裤子项目,应该可以自己建造。它有自己的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
当然,我希望在projectA中使用projectB的构建目标,因此在projectA的BUILD
中,我有这样的东西:
一切都很好。但是,由于projectB是一个独立的项目,它的src/python/libA/BUILD
文件包含以下内容:
因此,projectB确实可以独立构建。但是,当尝试构建projectA时,projectB中的build targets从projectA的project根开始搜索,例如:
Exception Message: libB was not found in BUILD files from path/src/python
pantsbuild是否有任何干净的方法来处理这些子项目依赖关系?或者,我会被迫更改子项目的生成文件,以使它们适合我的项目布局(导致项目无法独立生成)?在
欢迎任何解决方案或建议!在
iiuc
src/python:libB
必须是projectB/src/python:libB
。repo中的所有目标路径都应该与构建根目录相关,在您的示例中是path
。在结果我希望的功能没有得到裤子的支持。首先,我遵循了一个Yi Cheng在评论中的建议,创建了一个脚本,将所有子项目的构建规则替换为与根项目相关的规则。这个脚本可以在这里找到:https://github.com/brandonio21/pants-subproject-prep
然而,这个脚本相当有限,远远不是一个可行的解决方案。后来我在上游换了条裤子来支持这种行为。公关人员来了:https://github.com/pantsbuild/pants/pull/4088
现在,如果您在另一个pants项目中有一个子项目,那么使用
subproject-roots=["path/to/subproject1_root", "path/to/subproject2_root"]
(或在pants.ini
中指定选项)构建根项目将从正确的子项目根生成子项目相关问题 更多 >
编程相关推荐