微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决模块信息的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 举报,一经查实,本站将立刻删除。