问题描述
我从事基于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 (将#修改为@)