問題タブ [bazel-rules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Bazel を使用して多言語プロジェクトを構築する
ネイティブ ランタイムで JavaScript を実行する Kotlin JVM プロジェクトがあります。現在、さまざまな言語ソースが個別のリポジトリで定義されており、JS ファイルは webpacked であり、JVM プロジェクトの依存関係として指定される JAR としてパッケージ化されています。これは問題なく機能しますが、2 つのリポジトリは本質的に結合されているため、マージしたいと考えています。さまざまなビルド ツールを豊富に維持するよりも、Bazel のような多言語ビルド システムを学習して使用する良い機会になると思いました。
現在の構造:
基本的に、ビルドしようとしている主なパッケージは 2 つあります。Web パッケージは正しくビルドされ、コマンド ラインから Webpacked の出力を表示できます。BUILD
全体像の Web ファイルを含めます。
もう 1 つの重要なパッケージは、ネストされた//jvm/src/main/java/com/example/bazel/plugin
パッケージです。これは基本的に最終成果物であり、Web パッケージの出力がリソースとして含まれる JAR である必要があります。
これは一見簡単ですが、ビルド中に次のエラーが発生します。
いくつかの実験の後、これは、生成された出力を のリソースとしてバンドルしようとする問題のようですkt_jvm_library
。リソースが別のパッケージの具体的なソース ファイルを参照している場合、問題なく機能します。ここでの主な問題は、これが Bazel にとって適切なパターンなのか、それとも私がこの技術を悪用しようとしているのかということです。これは比較的単純な使用例のように思えますが、私が最も懸念するドキュメントの行があります。
すべてのルールの不変条件は、ルールによって生成されたファイルが常にルール自体と同じパッケージに属していることです。ファイルを別のパッケージに生成することはできません。ただし、ルールの入力が別のパッケージから取得されることは珍しくありません。
https://docs.bazel.build/versions/master/build-ref.htmlから
どんな洞察も大歓迎です。
bazel - Bazel Starlark: BUILD ファイルを手続き的に生成するにはどうすればよいですか?
http_archive を介してアーカイブをダウンロードした後、スクリプトを実行して、フォルダー構造とその中の Cmake ファイルから BUILD ファイルを生成したいと思います (現在、手作業で行っており、スクリプト化できるほど簡単です)。starlark のドキュメントでファイルを開いたり、読み書きしたりする方法については何も見つかりませんが、http_archive 自体が bzl ファイルからロードされているため (ただし、そのファイルのソースはまだ見つかりません...)、BUILD ファイルを生成します (アーカイブからそれらをアンパックすることによって) BUILD ファイルも生成する http_archive のラッパーを書くことが可能に違いないと思いますか?