Есть ли способ получить все зависимости проекта через плагин sbt? - PullRequest
5 голосов
/ 29 февраля 2012

Я хочу написать плагин sbt, и внутри него мне нужно получить список всех зависимостей текущего проекта (с некоторой информацией, возможно). Возможно ли это?

1 Ответ

5 голосов
/ 29 февраля 2012

В нашем проекте мы используем задачу обновления, чтобы получить зависимости библиотеки:

(update) map {
  (updateReport) =>
    updateReport.select(Set("compile", "runtime")) foreach { srcPath => /* do something with it */ }
}

Надеюсь, это поможет для начала.

[EDIT] Вот простой пример того, как добавить эту функцию в вашу задачу:

val depsTask = TaskKey[Unit]("find-deps", "finds the dependencies")

val testConf = config("TestTasks") hide

private lazy val testSettings = inConfig(testConf)(Seq(
    depsTask <<= (update) map {
        (updateReport) =>
            updateReport.select(Set("compile", "runtime")) foreach { srcPath => println("src path = " + srcPath) }
    }
))

Чтобы использовать задачу, просто добавьте testSettings в ваш проект.

Подробнее о задачах см. Документацию sbt . Более подробную информацию о задаче обновления можно найти здесь .

[EDIT2] Задача обновления получает только зависимости библиотеки. Я никогда не пробовал внешний зависимости проекта (как в git-репозитории). Может быть, вам нужно что-то вроде следующего: найти артефакты проекта . Задача allTheArtifacts находит артефакты проекта и артефакты его зависимостей проекта.

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