SBT:在运行时向项目添加依赖项

时间:2017-01-05 12:43:07

标签: sbt sbt-assembly

有sbt项目声明

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

它有taskKey提取文件系统的一些依赖项。

我的问题是,在加载SBT的那一刻,我无法确定所有依赖项,只有在执行私有命令别名后才能完成

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

有没有这样做?

1 个答案:

答案 0 :(得分:2)

实际上,无视我对你问题的评论。您可以使用命令修改构建的状态,因此在运行它之后,它所做的更改将保留。

这些方面的东西:

// 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调用它。

从命令返回的状态实例将成为构建的新状态,即如果您添加了一些依赖项,则构建将看到它们。