Я хотел бы знать, когда мне следует использовать sbt assembly
, а когда sbt compile && sbt package
?
Цитировать sbt-assembly веб-сайт (который дает sbt assembly
):
Цель проста: создать полный JAR-файл вашего проекта со всеми его зависимостями.
Любая зависимость в build.sbt
(которая не являетсяпомеченный как Provided
) будет частью окончательного файла JAR, который называется Uber-JAR.
Существует по крайней мере две причины, по которым вы хотите использовать плагин:
- Соберите все зависимости в один JAR-файл, который намного проще развернуть в рабочей среде (аналогично образу Docker)
- Запустите приложение с одной версией Spark, скажем, 2.0.0, скластер, имеющий
spark-submit
из Spark 1.6.0
Вы используете sbt compile && sbt package
для компиляции и упаковки классов вашего приложения (которое, кстати, вообще не должно использовать Spark).Этот jar-файл не включает зависимости вашего приложения, поэтому любые зависимости должны быть предоставлены другим способом (и делает развертывание немного сложным).
NB: sbt compile && sbt package
- это просто более длинный вариант sbt compile package
который, учитывая, что compile
задача является зависимостью package
, это просто sbt package
.