私は比較的自己完結型のリリースパッケージを作成しようとしています(これは、tarballですが、RPM/Debになる可能性があります) jarと同様に私のコードはコンパイルされ、実行時に使用されます。Bazelでパッケージ化されたjarファイル
私はMyPackage(複数の.javaファイルを持っています)を持っていて、外部のJar AとBに直接依存しているとしましょう。Bは外部Jarに依存しています。 C. maven_jarsからA、B、Cを取得します。
私はすでにこのようなルールを設定している:
mypackageと/ BUILDでは:
java_library(
name = "MyPackage",
srcs = glob(["src/main/java/**/*.java"]),
deps = ["//MyPackage/artifacts:compile_jars"],
)
とmypackageとで
/アーティファクトが/ BUILD:java_library(
name = "compile_jars",
visibility = ["//MyPackage:__pkg__"],
exports = ["libdeps_A", "libdeps_B"]
)
java_library(
name = "libdeps_A",
exports = ["@org.someone.A//jar"],
)
java_library(
name = "libdeps_B",
exports = ["@org.secondparty.B//jar", ":libdeps_C"],
)
java_library(
name = "libdeps_C",
exports = ["@org.thirdperson.C//jar"],
)
しかし、建てlibMyPackage .jar(期待どおり)はlibdeps_ [ABC]のファイルを含んでいませんが、MyPackageのsrc/main/javaにあるものからの.classファイルのみを含んでいます。
私は、成功裏に使用する別のルールを持っています:MyPackageを私のtarballのlib/dirに入れてください。
私の質問は、// MyPackage/artifacts:compile_jarsの規則をトラバースすることから来る一連のファイル(jar)を処理するための方法があるかどうかです。それらをtarアーカイブにも入れることができます。
これは、java_binaryの_deploy.jar暗黙の出力ターゲットが行う処理と非常によく似ています。私のエントリーポイントには「メイン」ルーチンがないので、私はそれを使うことはできないと思う。 (Google PlayのonStartを使用しています)
MyPackage/artifacts/BUILDにある情報から// MyPackage/artifacts:compile_jarsターゲットを別の形式にするオートメーションを作成することはできますが、車輪を再発明していますか?
おかげで、ショーン