SBT: как исключить один подпроект из одной агрегированной задачи

У меня есть куча подпроектов, которые я определяю следующим образом (фактически сгенерированные project/meta.sbt):

lazy val Top = (project in file("."))
  .aggregate(common, p1, p2, tests, scripts)
  .dependsOn(common, p1, p2, tests, scripts)
lazy val common = project
lazy val p1 = project.dependsOn(common % "compile->compile;test->test")
lazy val p2 = project.dependsOn(common % "compile->compile;test->test")
lazy val tests = project.dependsOn(common % "compile->compile;test->test")
lazy val scripts = project

AFAICT (так что, возможно, это неправильно), и aggregate, и dependsOn вверху имеют смысл: первый для запуска задач во всех подпроектах, а второй для удобства отладки.

Теперь дело в том, что tests содержит только кучу тестов, а scripts — это скрипт, который используется как шаг публикации, поэтому мне нужно как-то сделать так, чтобы он не создавал jar-файлы только для них. Я все еще хочу, чтобы compile/test/etc были объединены, включая их.

Насколько я понимаю из документов, это нужно сделать, установив ключ aggregate в Top и действительно добавив что-то вроде

  .settings(aggregate in clean:= false)

предотвращает агрегирование clean, но я хочу сделать это для package и не хочу полностью отбрасывать его, просто не упаковывая эти два подпроекта. Лучше всего использовать что-то вроде aggregate in (tests, packageBin), но, похоже, это не производит впечатления на SBT: похоже, что packageBin неверно, а также объединение его с tests не работает.

Это возможно? На самом деле, учитывая, что SBT немного переработан, это всегда возможно, так что перефразируйте: как я могу это сделать?

Обновлять:

Благодаря этому ответу я нашел обходной путь - добавьте:

.settings(Keys.`package` := file(""))

к определениям подпроектов, которые не должны быть упакованы. Это работает, чтобы избежать создания файлов jar, но, очевидно, это не ответ на фактический вопрос (с которым я, вероятно, снова столкнусь).


person Eli Barzilay    schedule 28.09.2016    source источник
comment
У меня точно такой же вопрос. Вы когда-нибудь находили реальный ответ?   -  person akauppi    schedule 08.06.2017
comment
@akauppi: не совсем, но с обновлением, о котором я упоминал, мне удалось обойти проблему...   -  person Eli Barzilay    schedule 08.06.2017