【发布时间】:2021-01-22 11:13:30
【问题描述】:
最近一直在尝试改变我的 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",
assemblyName,
settings,
dependencies and such (...)
)
.dependsOn(
inner_module_two
)
为main-project 生成的 jar 文件非常非常小(大小不超过 5mbs),并且只包含 Scala 相关的内容,没有项目类等。但是,其他模块的 jar 包是完整的,并且包含了它们所需的一切。
我已经尝试将以下设置添加到main-project。
aggregate in assembly := false
但到目前为止仍然没有运气。没有生成子模块的 jar,但 main-project jar 仍然不包含子模块的内容。
任何线索可能是问题所在?
编辑
尝试了@LuisMiguelMejíaSuárez 的建议并且似乎想要构建,但是出现了一些已经在各自模块中解决的错误。在给定的模块中,由于某些覆盖而解决了一些冲突,但现在它们又出现了。
[error] deduplicate: different file contents found in the following:
使用dependsOn 而不是aggregate 会影响添加、覆盖等依赖项的方式?
【问题讨论】:
-
也许使用
dependsOn而不是aggregate可以解决问题? -
它确实有效!有点......在一个模块中解决的依赖问题现在在更改为dependsOn后重复......主模块是否应该包含与其子模块相同的依赖关系和着色规则? @LuisMiguelMejíaSuárez
-
和错误我的意思是这种错误 [error] deduplicate: different file contents found in the following:
-
是的,不知道,对不起。我从来没有这样做过,只是认为这可能会有所帮助。您可能还想在gitter channel 中提问。
标签: scala sbt sbt-assembly