Как вы предотвращаете включение classpath подпроектов в classpath проекта верхнего уровня? - PullRequest
1 голос
/ 15 августа 2011

Я унаследовал проект, в котором есть несколько подпроектов. Во время разработки вы можете запустить сам продукт, позвонив по номеру run в проекте верхнего уровня. Однако для запуска продукта не требуется путь к классу всех подпроектов, которые должны быть включены. Фактически, некоторые подпроекты имеют classpath, который не должен быть определенно включенным в верхний уровень runClasspath. Как ты можешь это сделать? Как вы можете явно исключить путь к классам подпроекта из пути к классам верхнего уровня?

1 Ответ

0 голосов
/ 15 августа 2011

Сначала я отвечу на свой вопрос. Я не чувствую, что это правильный подход, но это похоже на работу. Предположим, что вы определили подпроект как это:

lazy val fooSub = project(....)

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

override def topologicalSort = super.topologicalSort.filter(_ != fooSub)

Это работает, потому что fullClasspath, кажется, использует topologicalSort для поиска всех подпроектов, чтобы включить их пути к классам в свой собственный путь к классам. Это кажется слишком агрессивным на мой вкус. Трудно сказать, сломался ли он где-нибудь еще.

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