私は、多数のサブプロジェクトと外部ライブラリの依存関係を持つsbtプロジェクトを持っています。 build.sbt
はこのように書きます:サブプロジェクトでsbtネイティブパッケージャを使用する方法(sbt 0.13)
val extlib1 = "xy.xxx" % "lib1" % "1.0+"
val extlib2 = "xy.yyy" % "lib2" % "1.0+"
val extlib3 = "xy.zzz" % "lib3" % "1.0+"
lazy val core=project settings (
name:="cor",
libraryDependencies++=Seq(extlib1)
)
lazy val servercore=project settings (
name:="srvcore",
libraryDependencies++=Seq(extlib1,extlib2)
) dependsOn(core)
lazy val masterserver=project settings (
name:="mastersrv",
mainClass:=Some("masterserver")
) dependsOn(servercore)
lazy val otherserver=project settings (
name:="othersrv",
libraryDependencies++=Seq(extlib3),
mainClass:=Some("otherserver")
) dependsOn(servercore)
// Only for aggregating the builds of the subprojects
lazy val root=project in file(".") settings(name:="proj") aggregate(
core,servercore,masterserver,otherserver
)
だから、実際にプロジェクトが外部ライブラリと、このプロジェクト自体のサブプロジェクトのサブセットに依存していくつかのプログラム(「マスターサーバー」、「otherserver」)を作成します。
マスターサーバーまたは他のサーバーを起動するために必要なJARの完全なセットは、ごとに区切られたです。だから、私はしたいと思います。同様のコンテンツと
mastersrv.jar
srvcore.jar (needed by mastersrv.jar)
cor.jar (needed by srvcore.jar)
lib1.jar (needed by mastersrv and srvcore)
lib2.jar (needed by srvcore)
<whatever>.jar (further libs needed by lib1 or lib2)
とotherserver/target/<whatever>
を含むmasterserver/target/<whatever>
(それはそれはothersrv.jar
の必要に応じて、またlib3.jar
を追加する必要があります。それを行うにはどのように
?私はネイティブパッケージャでこれを行うことができますか?発行(何mailClass
がないため?)ルートプロジェクトでstage
は何もしません。masterserver/state
を発行すると、エラーメッセージ
> masterserver/stage
[error] No such setting/task
[error] masterserver/stage
[error] ^
Iムー私は、ネイティブのpackagerプラグインのドキュメントから実際の手がかりを得られないことを認めています。私が望むものをどのようにアーカイブすることができますか?
編集:もちろん、私はディレクトリのものに縛られていません。メインのtarget
ディレクトリに複数のZIPファイルがある場合は、それもo.kです。私は1つの場所にサブプロジェクトのすべての依存関係を持ちたいだけです。
編集2:OK、私はPlay!フレームワークはまさに私が望むものです。そして、それはsbtネイティブパッケージャを使用します。プログラミング言語としてJavaを使用するPlay以外のSBT処理プロジェクトで、サブプロジェクトの再帰的なパッケージングを実現するにはどうすればよいですか?
自己応答ありがとうございます。私はそれが非常に役に立ちました:) – opyate
この回答はおそらく、 'sbt-native-packager'の1.x行で使われている' sbt 'AutoPlugin'機能の使用を反映するように更新されるべきです。 – metasim
実際、答えは2年以上経っています。残念ながら、私たちはそれ以来、私たちのツールチェーンを変更したり更新したりしていないので、私はAutoPluginの経験がないことを認めなければなりません。 :-( –