在uber jar中而不是单个子模块jar中构建sbt项目

问题描述

最近,Been试图改变我的Scala项目进行装配的方式,以便仅从其中生成一个jar,而不是每个模块都生成一个。

main-project
| - inner-module-one [inner_module_one]
| - inner-module-two [inner_module_two]

我目前对主要模块的操作如下(我希望它的uber jar包含其他模块内容)。

project
  .in(file("."))
  .settings(
    name := "main-project",assemblyName,settings
  )
  .aggregate(
    inner_module_one,inner_module_two
  )

另外两个模块声明如下。

lazy val inner_module_one = project
  .in(file("inner-module-one"))
  .settings(
    name := "inner-module-one",settings,dependencies and such (...)
  )
  .dependsOn(
    inner_module_two
  )

main-project生成的jar文件非常小(大小不超过5mbs),并且仅包含与Scala相关的内容,而没有任何项目类。但是,其他模块罐是完整的,并且包含它们所需的一切。

我已经尝试将以下设置添加到main-project

aggregate in assembly := false

但到目前为止,仍然没有运气。不会生成子模块的jar,但是main-project jar仍然不包含子模块的内容。

任何线索可能出在哪里?

编辑

尝试了@LuisMiguelMejíaSuárez的建议,似乎想要构建,但是,出现了一些错误,这些错误已在其各自的模块中解决。在给定的模块中,由于有一些覆盖而解决了一些冲突,但是现在它们又出现了。

[error] deduplicate: different file contents found in the following:

使用dependsOn而不是aggregate是否会影响依赖项的添加,覆盖等方式?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)