【发布时间】:2019-02-21 06:25:14
【问题描述】:
我有一个具有这种结构的项目:
--resources
--src
|
|-- mypackage.main
|
|-- MainClassOne.scala
|-- MainClassTwo.scala
|-- mypackage.utils
|
|-- SomeOne.scala
|-- SomeTwo.scala
我正在尝试构建两个胖罐子,每个罐子都有自己的 Main 类。说jarOne.jar 和MainClassOne 和jarTwo.jar 和MainClassTwo
以下是我的 sbt 文件的内容:
lazy val assemblySettings = Seq(
assemblyMergeStrategy in assembly := {
case "application.conf" => MergeStrategy.concat
case "defaults.conf" => MergeStrategy.concat
case PathList("UnusedStubClass.class") => MergeStrategy.discard
case x => val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
)
lazy val BuildOne = (project in file("."))
.settings(mainClass in Compile := Some("mypackage.main.MainClassOne"))
.settings(mainClass in assembly := Some("mypackage.main.MainClassOne"))
.settings(assemblyJarName in assembly := "jarOne.jar")
.settings(myMetaSettings: _*)
.settings(myScalaSettings: _*)
.settings(resolvers ++= myRepositories)
.settings(libraryDependencies ++= myDependencies)
.enablePlugins(AssemblyPlugin)
.settings(assemblySettings: _*)
lazy val BuildTwo = (project in file("."))
.settings(mainClass in Compile := Some("mypackage.main.MainClassTwo"))
.settings(mainClass in assembly := Some("mypackage.main.MainClassTwo"))
.settings(assemblyJarName in assembly := "jarTwo.jar")
.settings(myMetaSettings: _*)
.settings(myScalaSettings: _*)
.settings(resolvers ++= myRepositories)
.settings(libraryDependencies ++= myDependencies)
.enablePlugins(AssemblyPlugin)
.settings(assemblySettings: _*)
但是,我注意到这只会产生一个罐子 - jarTwo.jar - 而不是我最初希望的两个罐子。
这个想法是能够从同一个项目构建 jars(具有不同的名称和主类)。感谢有关如何使用 sbt 实现这一目标的意见。
【问题讨论】:
-
嘿,你能解决这个问题吗?我也面临着类似的问题。
标签: scala sbt-assembly