У меня есть проект с такой структурой:
--resources
--src
|
|-- mypackage.main
|
|-- MainClassOne.scala
|-- MainClassTwo.scala
|-- mypackage.utils
|
|-- SomeOne.scala
|-- SomeTwo.scala
Я пытаюсь построить два толстых фляги, каждый из которых имеет свой основной класс.Скажите 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
- и не те, на которые я изначально надеялся.Идея состоит в том, чтобы иметь возможность создавать jar-файлы (с разными именами и основными классами) из одного проекта.Цените вклад в то, как можно этого добиться, используя SBT.