Сбор зависимостей по sbt 0.10 (помещение всех jar-зависимостей в target / scala-version / lib /) - PullRequest
8 голосов
/ 08 сентября 2011

Я использую sbt 0.10 с Scala 2.9.1.

Я прочитал http://groups.google.com/group/simple-build-tool/browse_thread/thread/792e5360877e78/987b6af687b8e33b?lnk=gst&q=collect+jars#987b6af687b8e33b

Однако я не хочу одну огромную банку.Я просто хочу, чтобы файлы зависимостей заканчивались в каталоге target / scala-2.9.1.final / lib.

Причина, по которой мне не нужен один огромный jar, в том, что в проекте используется много библиотек, и обычноменяется только приложение .jar.Однако, поскольку это многоязычный проект, и не у всех членов команды есть scala или sbt, jar просто передается в git.Регулярный выпуск одного большого dar увеличил бы размер репо.

Как я могу скопировать эти зависимости?;)

Ответы [ 3 ]

14 голосов
/ 09 сентября 2011

Вы не указали конфигурацию ivy для копирования конфигураций, но вот полностью рабочий пример, который скопирует все ваших управляемых зависимостей в папку target/<scala version>/lib (версия scala предоставляется задачей crossTarget).Просто скопируйте это и поместите в файл project/Build.scala (или любое другое имя файла):

import sbt._
import Keys._

object MyBuild extends Build {

  lazy val copyDependencies = TaskKey[Unit]("copy-dependencies")

  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)
    }
  }

  lazy val root = Project(
    "root",
    file("."),
    settings = Defaults.defaultSettings ++ Seq(
      copyDepTask
    )
  )
}

Если вы хотите конкретную конфигурацию, замените

updateReport.allFiles на updateReport.select(configuration = Set("compile"))или любую другую конфигурацию плюща.

1 голос
/ 13 сентября 2011

См. Задание xitrum-package: https://github.com/ngocdaothanh/xitrum/blob/master/plugin/src/main/scala/XitrumPlugin.scala

Копирует все зависимости в каталог target / xitrum_package.

1 голос
/ 08 сентября 2011

Различные ключи "Classpath" содержат различные представления о пути к классам, но, вероятно, проще всего изменить плагин sbt-assembly, чтобы просто помещать файлы jar в каталог вместо выполнения цикла unzip / rezip.Плагин очень маленький (всего 150 строк), и из беглого взгляда довольно очевидно, что именно нужно менять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...