2017-01-05 2 views
0

Существует декларацию SBT проектаSBT: Добавить зависимости проект во время выполнения

lazy val myProject = (Project("myProject", file("someRoot")) 
    enablePlugins ... 
    settings (...) 

имеет taskKey, который извлекает некоторые зависимости к файловой системе.

Моя проблема заключается в том, что на момент загрузки SBT я не могу определить, все зависимости, это может быть сделано только после того, как частная команда Алиас выполнена

addCommandAlias("resolveDependencies", "; resolveDependenciesTask; TODO: update myProject dependencies and reload it") 

Есть ли вообще это делать?

+0

Я знаю, как выполнить определенную задачу с новым набором настроек. Будет ли это работать, или вам нужно применить новые настройки для всех существующих задач? – Haspemulator

+0

Я могу попытаться перепроектировать, чтобы перезагрузить задачу, должно быть достаточно в рамках одной задачи – Stas

ответ

1

Соблюдайте свой комментарий к своему вопросу. Вы можете использовать команду для изменения состояния сборки, поэтому после ее запуска изменения, которые она сделала, остаются.

Что-то вдоль этих линий:

// in your build.sbt 

commands += Command.command("yourCustomCommand")(state => 
    Project.extract(state).append(
    Seq(libraryDependencies += // settings you want to modify 
     "com.lihaoyi" % "ammonite-repl" % "0.5.7" cross CrossVersion.full), 
    state)) 

Затем вызовите его sbt yourCustomCommand,

Экземпляр состояния, который вы возвращаете из команды, становится новым состоянием сборки, то есть если вы добавили некоторые зависимости, сборка увидит их.

Смежные вопросы