Подтвердить что ты не робот

Как исключить запись общедоступных ресурсов из проекта scala/sbt/slf4j?

В моем проекте scala/sbt используется grizzled-slf4j и logback. Сторонняя зависимость использует запись в Apache Commons.

С Java/Maven я бы использовал jcl-over-slf4j и logback-classic, чтобы использовать logback как единый бэкэнд ведения журнала.

Я бы также устранил зависимость от общего права, которую сторонняя lib давала бы sbt. Я делаю следующее в Maven (которое рекомендуется http://www.slf4j.org/faq.html#excludingJCL):

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
    <scope>provided</scope>
</dependency>

И вопрос в том, как сделать то же самое с sbt?

4b9b3361

Ответ 1

Подход Heiko, вероятно, будет работать, но не приведет к загрузке ни одной из зависимостей сторонней библиотеки lib. Если вы хотите исключить только один, используйте exclude.

libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam")

или

... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!

Ответ 2

Для sbt 0.13.8 и выше вы также можете попробовать исключение зависимостей на уровне проекта:

excludeDependencies += "commons-logging" % "commons-logging"

Ответ 3

Я встретил ту же проблему раньше. Решила его, добавив зависимость, например

libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging")

или

libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))

Ответ 4

Добавьте непереходную зависимость вашей сторонней библиотеки, например.

libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive