Ответ 1
% "предоставлена" конфигурация
Первый вариант, чтобы исключить банку из жировой банки, заключается в использовании конфигурации "provided"
в зависимости от библиотеки. "provided"
поступает из Maven при условии области, которая определяется следующим образом:
Это похоже на
compile
, но указывает, что вы ожидаете, что JDK или контейнер предоставят зависимость во время выполнения. Например, при создании веб-приложения для Java Enterprise Edition вы должны установить зависимость от API сервлета и связанных с ним API Java EE с областьюprovided
, поскольку веб-контейнер предоставляет эти классы. Эта область видимости доступна только в пути к компиляции и тестированию и не является транзитивной.
Поскольку вы развертываете свой код в контейнере (в данном случае Spark), вопреки вашему комментарию вам, вероятно, понадобится стандартная библиотека Scala и другие библиотеки (например, отправка, если вы ее использовали). Это не повлияет на run
или test
.
packageBin
Если вам нужен только исходный код, а не стандартная библиотека Scala или другие библиотеки, это будет packageBin
, встроенный в sbt. Эта упакованная банка может быть объединена с банкой только для зависимостей, которую вы можете сделать с помощью sbt-assembly assemblyPackageDependency
.
исключеноJars в сборке
Последний вариант - использовать excludedJars in assembly
:
excludedJars in assembly := {
val cp = (fullClasspath in assembly).value
cp filter {_.data.getName == "spark-core_2.9.3-0.8.0-incubating.jar"}
}