1
當sbt-assembly構建一個fat jar時,它將所有依賴關係放在主文件夾中。我需要構建一個罐子,看起來像這樣在sbt程序集中指定jar結構
--domain
- 域類
- LIB
- 依賴類
是可以用sbt程序集或其他任何方式來做到這一點lugin?
當sbt-assembly構建一個fat jar時,它將所有依賴關係放在主文件夾中。我需要構建一個罐子,看起來像這樣在sbt程序集中指定jar結構
--domain
- LIB
是可以用sbt程序集或其他任何方式來做到這一點lugin?
如果你想單獨您的應用程序的jar文件和您dependecy jar文件,這裏是我發現SBT最實用的方法;
創建項目/ plugins.sbt文件,如果不存在,添加以下行:
addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.8.0")
加入這一行後刷新項目。 注意:插件版本可能會及時更改。
當SBT刷新完成更新您的build.sbt文件是這樣的:
lazy val MyApp = project.in(file("."))
.settings(artifactName := {(
sv: ScalaVersion,
module: ModuleID,
artifact: Artifact) => "MyApp.jar"
})
.settings(packSettings)
然後運行:
sbt pack
或者,如果你這樣做是爲孩子的項目,運行以下命令:
sbt "project childproject" clean pack
這將很好地分離你的主jar文件和你的依賴ency罐子。
您的應用程序jar將在目標scala文件夾中。
您的依賴關係將在target/pack/lib中。
以這種方式,您可以一次部署您的依賴關係。
而且,只要您更改應用程序,就可以部署應用程序jar文件。
因此,在每次更改時都不必部署超級jar文件。
而且在生產中,你可以運行你的應用程序,如:
java -cp "MyApp.jar:dependency_jars_folder/*" com.myapp.App