сборка scala sbt без основного атрибута манифеста

Я использую сборочный плагин в sbt для сборки своего проекта. Но ошибки случаются при запуске "java -jar xx.jar" -

«нет основного атрибута манифеста».

Я думаю, это потому, что в моем каталоге src/main/scala/ есть два файла, и каждый с объектом, расширяющим Application, что означает, что в проекте есть две основные записи. Но мне нужно два приложения, одно — сервер, а другое — тестовый клиент.

Как решить эту проблему two-main-entry в scala sbt. Заранее спасибо.


person hl1020    schedule 09.01.2015    source источник


Ответы (3)


В файле сборки SBT определите основной класс.

Если вы используете build.sbt, то это будет:

mainClass in assembly := Some("com.domain.Main")

Если вы используете Build.scala, вы можете сделать что-то вроде:

lazy val app = (project in file("app")).
  settings(assemblySettings: _*)
  settings(mainClass in assembly := Some("com.domain.Main"))
person sksamuel    schedule 09.01.2015
comment
@polkovnikov.ph вы уверены, что у вас загружен плагин sbt-assembly? - person Salim Fadhley; 10.07.2017

Вы можете использовать -cp вместо -jar

java -cp xx.jar com.domain.AnyClassName

person folex    schedule 12.10.2018

У меня была эта проблема при тестировании Lagom.

Для развертывания в Lagom вы можете просто получить доступ к проекту -impl и запустить это:

./sbt "project <your-project>-impl" dist

Это создаст zip с исполняемым файлом внутри.

person Christian Vielma    schedule 28.07.2017