jak zmusić sbt do zebrania w jednym miejscu wszystkich plików jar, od których zależy mój kod?

Jestem nowy w sbt. Chcę, aby umieścić wszystkie muchy jar zależności, a także mój plik jar w jednym miejscu. SBT uruchomi aplikację, ale mam różne zależności rozrzucone wokół i .ivy folder pełen rzeczy, od których zależy mój plik jar. więc czy istnieje proste polecenie, aby skopiować je wszystkie w jednym miejscu, abym mógł rozpowszechnić je na innej maszynie?

Author: Tim Pigden, 2011-11-02

7 answers

Istnieje wiele wtyczek, których możesz użyć: SBT-assembly, sbt-proguard, sbt-onejar, xitrum-pakiet itd.

Zobacz listę wtyczek SBT .

 19
Author: pr1001,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 08:59:24

Dodaj następujący wiersz do pliku build.sbt.

retrieveManaged := true

To będzie gromadzić zależności lokalnie

 12
Author: CatsLoveJazz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-17 12:51:23

Utwórz zadanie w pliku budowania w następujący sposób:

lazy val copyDependencies = TaskKey[Unit]("pack")

def copyDepTask = copyDependencies <<= (update, crossTarget, scalaVersion) map {
  (updateReport, out, scalaVer) =>
    updateReport.allFiles foreach {
      srcPath =>
        val destPath = out / "lib" / srcPath.getName
        IO.copyFile(srcPath, destPath, preserveLastModified = true)
    }
}

Dodaj zadanie do takiego projektu:

lazy val HubSensors =
  Project("HubSensors", file("HubSensors"), settings = shared ++ Seq(
    copyDepTask,
    resolvers ++= Seq(novusRels),
    libraryDependencies ++= Seq(
      jodatime
    )
  )) dependsOn(HubCameraVision, JamServiceProxy, HubDAL)

W konsoli SBT typ:

project [Project Name]
pack
 10
Author: torrens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 10:31:33

Wypróbuj wtyczkę sbt-pack https://github.com/xerial/sbt-pack , który zbiera wszystkie zależne od siebie Jary w folderze target/pack, a także generuje skrypty startowe.

 8
Author: leo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 15:36:32

Możesz też spróbować natywnego Packagera SBT: https://github.com/sbt/sbt-native-packager (sbt 0.7+)

Jest to nadal WIP, ale zostanie użyty w Play Framework 2.2 w najbliższych tygodniach. Dzięki temu możesz tworzyć samodzielne pliki ZIP, pakiety Debiana (DEB), pakiety instalacyjne systemu Windows (MSI), DMG, RPM i tak dalej.

 4
Author: Adrien Aubel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-05 14:13:24

Dokumenty SBT mają listę "wtyczek One Jar":

 2
Author: bstpierre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-14 03:42:21

May you looking for this SBT plugin: https://github.com/anvie/sbt-onedir-plugin

 0
Author: anvie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 15:03:17