使用 SBT 将编译后的 Scala 文件打包到 jar 中
Posted
技术标签:
【中文标题】使用 SBT 将编译后的 Scala 文件打包到 jar 中【英文标题】:Packaging Compiled Scala Files Into Jars with SBT 【发布时间】:2016-01-23 02:46:14 【问题描述】:我正在使用 Play Framework、Scala 和 SBT。我需要将我的项目分成模块,因为它变得太大了。由于我不熟悉 SBT,我创建了一个虚拟项目来玩。我的dummyproject
本身有一些控制器,一个带有一些实用程序的core
模块和一个使用来自core
模块的一些实用程序的models
模块。
我的主要目标是避免编译模块,除非绝对必要(例如,它的代码已更改。)。
我可以使用dependsOn
使模块相互依赖,但据我了解,它们依赖于其他模块的代码。
我想做的是以某种方式将每个模块的编译文件打包成 jar 文件,并使依赖项使用 jar 文件而不是代码本身。我怎样才能做到这一点?
【问题讨论】:
Sbt 包***.com/a/20938836/3561471 【参考方案1】:我的主要目标是避免编译模块,除非绝对必要(例如,它的代码已更改。)。
这就是 SBT 所做的。如果代码没有改变,模块将不会被重新编译。即使代码发生了变化,它也可能能够检测到这种变化不会影响依赖模块(例如,如果您只更改了私有成员)并且不会重新编译它们。如果您改用 jar 文件,则会损害增量编译并迫使 SBT 重新编译您的文件更多。
如果您确实想依赖 JAR,一种方法是将您的项目拆分为几个独立的项目而不是模块,并以与添加任何其他库相同的方式添加依赖项。
【讨论】:
以上是关于使用 SBT 将编译后的 Scala 文件打包到 jar 中的主要内容,如果未能解决你的问题,请参考以下文章
sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类