Java 模块信息的sbt组装合并策略

Java 模块信息的sbt组装合并策略,java,scala,sbt,sbt-assembly,Java,Scala,Sbt,Sbt Assembly,我在一个基于Scala+SBT的项目上工作 我正在尝试将包含多个子模块的项目打包到一个可运行的胖jar中。我将sbt汇编插件与以下build.sbt文件一起使用: ... Project initializations... osName := "win" lazy val javafxVersion = "14" libraryDependencies ++= Seq(...Managed dependencies...) assemblyMer

我在一个基于Scala+SBT的项目上工作

我正在尝试将包含多个子模块的项目打包到一个可运行的胖jar中。我将sbt汇编插件与以下
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", "")
我需要上面的合并策略,否则我会遇到成千上万的冲突。但是,对于模块化的
(包含module info.class)
文件的托管依赖项,它将选择第一个。这就产生了一个问题,因为实际上有19个依赖项是模块化的(JavaFX就是一个例子)

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


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

您是否尝试过删除它们以查看结果?我以前也遇到过同样的问题,但当我为我的应用程序创建一个胖jar时,删除module-info.class文件并不是一个好主意problem@RodrigoVedovato是的,不幸的是,我在运行时需要它,否则jar不会运行。这回答了你的问题吗@托默谢塔,不,对不起,先生,这意味着我将不得不用我自己的插件替换sbt组件。你是否尝试过删除它们,看看会发生什么?我以前也遇到过同样的问题,但当我为我的应用程序创建一个胖jar时,删除module-info.class文件并不是一个好主意problem@RodrigoVedovato是的,不幸的是,我在运行时需要它,否则jar不会运行。这回答了你的问题吗@托默谢塔,不,对不起,先生,这意味着我必须用我自己的插件替换sbt组件。