デフォルトでは、SBTはそれぞれsrc/main
およびsrc/tests
〜target/scala-[version]/classes
およびtarget/scala-[version]/test-classes
のソースをコンパイルします。 src/core/java
またはsrc/core/scala
に入れて別のクラスパスにコンパイルしたコアというグループを定義したいと思います。これはどうすればいいですか?SBTで別のコンパイルスコープを定義する方法は?
私の動機:実行中のアプリケーションのJVMプロセスを再起動せずに、開発中に新しいアプリケーションコードを再コンパイルして再ロードしたいので、クラスファイルのグループを別にしたい。したがって、アプリケーションが起動するとコアクラスがロードされ、カスタムクラスローダを使用してsrc/mainからすべてのものをロードします。後者のクラスはリロード可能です。私はこれを行う必要があります。なぜなら、私は、JNIを介してソフトウェアをロードする音楽プログラムを作成しているので、ロードに時間がかかります。開発中にアプリケーションをリブートすると時間が浪費されます。
私は主にクラスファイルを分離する必要があります。私がjarファイルを作っていたら、myapp-core.jarとmyapp-main.jarが欲しいですが、それは重要ではありません。これは最終製品よりも開発のためです。
最初の試み:
val Core = config("core")
...
classDirectory in Core <<= crossTarget(t => file(t.getAbsolutePath + "core-classes"))
は、このエラーを与える:
Reference to undefined setting:
{.}/*:cross-target from {.}/core:class-directory
Did you mean *:cross-target ?
私は今のスコープについて読ん行くよ...
例が必要以上に理解できない場合は、具体的に追加設定を行いたいことはありますか?それを公開し、それをメインジャーに含める...? –
私はその例をまだ理解していません。私は追加の設定で何をしたいのかを説明するために質問に追加しました。 –
これはうまくいきますが、どのようにしてコア構成をテスト構成で使用できるようにしますか? – Brendanator