【问题标题】:SBT: Add dependencies to project at runtimeSBT:在运行时向项目添加依赖项
【发布时间】:2017-05-20 00:29:32
【问题描述】:

有sbt项目声明

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

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

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

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

有没有办法做到这一点?

【问题讨论】:

  • 我知道如何使用一组新设置来执行某些特定任务。是否可行,或者您需要为所有现有任务应用新设置?
  • 我可以尝试重新设计以重新加载任务,在单个任务的范围内应该足够了

标签: sbt sbt-assembly


【解决方案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调用它。

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

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 2015-03-30
    • 1970-01-01
    • 2013-05-28
    • 2020-01-01
    • 1970-01-01
    • 2016-05-30
    • 2017-03-07
    • 2018-03-20
    相关资源
    最近更新 更多