模块信息的sbt-assembly合并策略

问题描述

我从事基于Scala + SBT的项目。

我正在尝试将包含多个子模块的项目打包到可运行的fat-jar中。我正在将sbt-assembly插件与以下build.sbt文件一起使用:

... Project initializations...

osName := "win"

lazy val javafxVersion = "14"

libraryDependencies ++= Seq(...Managed dependencies...)

assemblyMergeStrategy in assembly := {
    case PathList("meta-inf",xs@_*) => MergeStrategy.discard
    case x => MergeStrategy.first
}

assemblyJarName in assembly := s"${name.value}_${version.value}.jar".replace("-SNAPSHOT","")

我需要上面的合并策略,否则我会遇到成千上万的冲突。但是,当涉及模块化(contain module-info.class)文件的托管依赖项时,它将选择第一个。这产生了一个问题,因为实际上有19个依赖项已经过模块化(JavaFX是一个示例)。

我尝试创建自己的自定义合并策略,但在SBT方面不是专家。我想知道是否有更好的解决方案,还是我必须创建一个自定义解决方案?

搜索了一段时间,找不到解决方案,但是this GitHub 链接表明sbt-assembly没有为此提供现成的解决方

解决方法

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

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

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