私はscalaでコーディングしており、sbt-assemblyプラグインでSBTを使用しています。私のプロジェクトには多くの外部ライブラリがあるため、sbt-assemblyはJARファイルをパックするのに時間がかかります。私は自分のコードと依存関係のために別々のjarファイルを持っていたいと思います。したがって、私は単に私のコードだけを再コンパイルして再パックすることができます。これを行う方法?これまでsbt-assembly:dependancies jarとmain jarをリンクする方法は?
進捗状況:
assembleArtifact in packageScala := false
が
assembleArtifact in packageDependency := false
その後、別の瓶がで構築することができます:build.sbt
で
次のコマンドは、ライブラリを梱包からSBT-アセンブリを防止します次のコマンドを渡します:assembly
、assembly-package-scala
およびassembly-package-dependency
。彼らは3つのジャーを作ります:私のプログラムを含むもの、スカラーライブラリを持つもの、すべての依存関係を持つもの。
ただし、jarファイルは、別のjarファイルの依存関係が表示されないため、もう実行できません。私はクラスパスをアセンブリsbtに追加する必要があると思うが、私はこれを行う方法がわからない。私がSBTを初めて利用しているので、お手伝いください(詳細なコメントは高く評価されます)。ありがとう!
これは機能します。それは速いです:約40秒から数秒に時間が短縮されます。テクニカルノート: 'scala-library-2.10.2-assembly.jar'もインクルードする必要がありました。そうしないと、scala replが不安定だったからです。私はsbt 0.12.4とsbt-assembly 0.9.0でコンパイルすることができました。 – Karolis
メインのjarファイルにこのクラス参照をパッケージ化する方法はありますか?したがって、jarをクリックすることで実行することができます。 – Karolis
[sbt-onejar](https://github.com/sbt/sbt-onejar)は、他のjarファイルを含むjarファイルを作成することができます。しかし、おそらくsbt-onejar'ed jarが飛んで解凍する必要があるため、sbtアセンブリの起動が早くなると聞きました。 sbt-assembly 0.9.0はunzipsをキャッシュするので、分割する必要はありません。 –