Сначала я отвечу на свой вопрос. Я не чувствую, что это правильный подход, но это похоже на работу. Предположим, что вы определили подпроект как это:
lazy val fooSub = project(....)
... тогда представляется возможным предотвратить включение classpath fooSub
в classpath верхнего уровня, добавив это в определение вашего проекта верхнего уровня:
override def topologicalSort = super.topologicalSort.filter(_ != fooSub)
Это работает, потому что fullClasspath
, кажется, использует topologicalSort
для поиска всех подпроектов, чтобы включить их пути к классам в свой собственный путь к классам. Это кажется слишком агрессивным на мой вкус. Трудно сказать, сломался ли он где-нибудь еще.