ビルドシステムとしてSBTを使用し、Scala/JavaとネイティブソースをJNIと組み合わせたプロジェクトがあります。SBTプロジェクトが2つの成果物を公開するための慣習的な方法は何ですか?
この種のプロジェクトを公開する私の現在の計画は、純粋なバイトコード(ネイティブバイナリの参照はエンドユーザに任されています)と1つの脂肪jarには、ネイティブライブラリが含まれ、自動的に抽出されます。
ファットjarを生成するために、packageFat
というタスクを作成しました。このタスクは基本的にネイティブライブラリと追加の接尾辞「-fat」を付加したタスクpackageBin
をコピーします。
ビルド構成の関連部分をここに見ることができます:https://github.com/jodersky/flow/blob/master/project/nativefat.scala
をしかし、このような構成で、鉱山に依存し、脂肪のjarファイルを含めることを望むすべてのプロジェクトは、このフォームで依存関係を宣言しなければなりません:
libraryDependencies += "<organization>" %% "<name>" % "<version>" artifacts Artifact("<name>-fat", "jar", "jar")
私はJNIを使用してプロジェクトを配布することは一種の不器用ですが、最後の「%」の後の部分は、依存関係は本当に厄介になることを知っています。だから私の質問は、一つのプロジェクトから一つの普通の瓶と一つの脂肪の瓶を発行するSBTの慣用的な方法は何ですか?
https://github.com/sbt/sbt-assemblyについてお考えですか?パブリッシュすると、パッケージをビルドするか、実際にパッケージをリポジトリにアップロードすることを意味しますか? – pedrofurla
実際にネイティブライブラリを含むリポジトリにjarをアップロードし、必要なときに正しいライブラリを抽出したいと思います。 –