2016-11-16 5 views
1

Когда сборка sbt-сборки создает жировую флягу, она помещает все зависимости в основную папку. Мне нужно построить банку, который выглядит, как этоУказать структуру jar в sbt-сборке

--domain

  • доменных классов

- Lib

  • зависимостей классов

это можно сделать это с помощью сборки sbt или любого другого p Лугин?

ответ

1

Если вы хотите отделить файл приложение банки и ваших файлов фляга зависимых пакетов, здесь наиболее практичный метод я нашел с SBT;

Создание проекта/plugins.sbt файла, если не существует, и добавьте следующую строку:

addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.8.0") 

После добавления этой строки обновить свой проект. Примечание: версия плагина может измениться во времени.

Когда SBT обновления завершает обновления файла build.sbt так:

lazy val MyApp = project.in(file(".")) 
    .settings(artifactName := {(
     sv: ScalaVersion, 
     module: ModuleID, 
     artifact: Artifact) => "MyApp.jar" 
    }) 
    .settings(packSettings) 

Затем запустите:

sbt pack 

Или, если вы делаете это для детского проекта, выполните следующее:

sbt "project childproject" clean pack 

Это будет прекрасно разделять ваш основной файл jar и вашу зависимость ency jars.

Ваше приложение будет находиться в целевой папке scala.

Ваши зависимости будут в target/pack/lib.

Таким образом, вы можете развернуть свои зависимости один раз.

И всякий раз, когда вы меняете свое приложение, вы можете просто развернуть файл приложения jar.

Поэтому при каждом изменении вам не нужно развернуть файл uber jar.

Кроме того, в производстве, вы можете запустить приложение как:

java -cp "MyApp.jar:dependency_jars_folder/*" com.myapp.App