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