Добавление новых зависимостей задач во встроенные задачи SBT? - PullRequest
27 голосов
/ 08 сентября 2011

Можно ли переопределить или изменить встроенные задачи SBT (например, компилировать), чтобы они зависели от пользовательских задач в моем собственном Build.scala?Переопределение, например, «compile» напрямую, невозможно, так как оно было определено с помощью lazy val и, следовательно, ссылка на super.compile выдает ошибку компилятора «super может не использоваться для lazy value».

Ответы [ 4 ]

24 голосов
/ 05 декабря 2017

Так как этот вопрос появляется, когда Google указывает, как добавить зависимость в SBT, а текущие ответы устарели с 0.13.x и удалены в 1.0, вот обновленный ответ, при условии, что printAction задача, от которой compile зависит:

(Compile / compile) := ((Compile / compile) dependsOn printAction).value

18 голосов
/ 21 декабря 2011

Обновление: см. Ответ arussell84 о современном способе сделать это

Вы должны быть в состоянии сделать это так:

в файле .sbt:

compile <<= (compile in Compile) dependsOn jruby

Где jruby - это ключ задачи, который вы определили в файле проекта / нечто.scala:

val jruby = TaskKey[Unit]("jruby", "run a jruby file")

Кроме того, это не является частью вашего вопроса, но вы можете просто позвонить по обычному коду Scala:

compile <<= (compile in Compile) map { result =>
  println("in compile, something")
  result
}
7 голосов
/ 08 сентября 2011

Ответ для себя: http://code.google.com/p/simple-build-tool/wiki/ProjectDefinitionExamples#Insert_Task_Dependency говорит ответ:

Если вы используете более старую версию 0.7.x SBT, вы можете сделать это:

import sbt._
class SampleProject(info: ProjectInfo) extends DefaultProject(info) {
  lazy val printAction = task { print("Testing...") }
  override def compileAction = super.compileAction dependsOn(printAction)
}
0 голосов
/ 08 апреля 2016

В папке base_dir/project/ создайте файл build.sbt и поместите туда libraryDependencies += ....

Это идиоматический способ SBT для создания вашего "проекта сборки", также известного как "Meta Build".

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