зависимости пакета сборки sbt в нескольких артефактах

Я пытаюсь создать с помощью сборки sbt из одного проекта несколько банок. Каждый из них содержит некоторые зависимости.

До сих пор я нашел только этот QA это близко к тому, что я ищу. Однако мне не нужно иметь отдельные конфигурации, в основном, когда я запускаю сборку, я просто хочу сгенерировать все разные банки.

Чтобы быть более конкретным. Я хочу сгенерировать:

  • Одна банка с моим кодом и некоторыми общими зависимостями
  • Один jar с зависимостями от хаупа ‹ — вот в чем проблема, не знаю как сказать, сгенерировать еще один jar с только этими зависимостями.
  • Одна банка со скалой

person eugen    schedule 15.07.2015    source источник


Ответы (1)


Не углубляясь в сложные конфигурации sbt, вы можете попробовать другой подход. Поскольку зависимости от Hadoop стандартны, вы можете пометить их как provided в своей сборке, чтобы исключить их.

"org.apache.hadoop" % "hadoop-client" % "2.6.0" % "provided"

Для Scala библиотека jar также является стандартной и может быть загружена отдельно вашим «пользователем». Чтобы удалить его из толстой банки, используйте следующую настройку (сборка 0.13.0):

assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)

Затем пользователя вашей толстой банки просят предоставить библиотеки Scala и Hadoop в пути к классам.

Например, при использовании Spark это правильный подход, поскольку обе эти библиотеки предоставляются рабочей средой Spark. Та же логика применима к среде Hadoop MapReduce.

person Lomig Mégard    schedule 15.07.2015
comment
Да, на самом деле это то, что я делаю (полагаясь на EMR для обеспечения Hadoop и искры). Но есть новая ситуация, когда я хочу запустить некоторый код из шлюза. Сначала я бы предпочел попытаться предоставить все необходимое с помощью упаковки приложения, а если это не сработает, сделать то же самое, что и с EMR. - person eugen; 16.07.2015