私はを初めて使用しており、私のディレマの周りに良い質問、回答、またはドキュメントを見つけることができないようです。パンツのサブプロジェクトの依存関係
私はビルド可能でなければならないパンツプロジェクトを持っています。それ自身のpants
とファイルと、すべてのBUILD
ファイルには、プロジェクトのルートからの相対パス()が含まれています。このプロジェクトはGitHubでホストされています。
私はこのプロジェクトを2番目のプロジェクトの依存関係として使いたいと思います。私はこれを行うために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のBUILD
で、私は一種の何かを持っているので、PROJECTA内からProjectBののビルドターゲットを使用するために探しています:
dependencies = [ "projectB/src/python:libA" ]
これはすべてうまくいいです。このため
dependencies = [ "src/python:libB" ]
、ProjectBのは、実際に独立して構築することができます:ProjectBのは、独立したプロジェクトであるため、しかし、それはsrc/python/libA/BUILD
ファイルソートの何かが含まれています。しかし、ProjectBの検索からのビルドターゲットは、例えば、PROJECTAのプロジェクトのルートから、PROJECTAを構築しようとしている:
Exception Message: libB was not found in BUILD files from path/src/python
は、これらのサブプロジェクトの依存関係を処理するための任意のきれいな方法を持ってpantsbuildいますか?それとも、私はプロジェクトレイアウト内にそれらを収めるためにサブプロジェクトのBUILDファイルを変更することを余儀なくされますか?
すべての解決策やアドバイスをお待ちしております。
がこれは適切なサブプロジェクトのルートからサブプロジェクトを構築します
--subproject-roots=["path/to/subproject1_root", "path/to/subproject2_root"]
でルートプロジェクトをビルドする(またはでオプションを指定します)正しい。プロジェクトが正しく動作するためには、projectB/src/python/libA/BUILDに 'dependencies = [" projectB/src/python:libB "]' – brandonio21が含まれている必要があります。しかし、私の指摘は、projectBは独立したプロジェクトです。私はそれが別のプロジェクトにあるという事実を知らなくても、それ自体ビルド可能であることを望んでいます。 – brandonio21
'pants'と' pants.ini'の2つのセットがあることに気がつきましたが、ビルドルートには1つしか許されません。例えばprojectBでは、ターゲットパスw.r.tを新しいビルドルートに変換する必要があります。 パンツは 'pants'実行ファイルがどこにあるかに基づいてビルドルートを決定するので、ここでもファンキーです。 –