#sbt #sbt-assembly
#sbt #sbt-assembly
Вопрос:
Как я могу указать sbt-assembly сохранять существующие правила слияния / дедупликации, за исключением случаев, когда два .class
файла объединяются, переименовать (и выдать предупреждение, чтобы я знал об этом)?
Будет ли это идентично стратегии shade, используемой в Maven?
Ответ №1:
rename
Стратегия буквально просто переименовывает файл и не изменяет содержимое, поэтому она не будет работать для файлов .class. Основной вариант использования для переименования — для файлов ЛИЦЕНЗИЙ.
Обновлено в сентябре 2015:
sbt-assembly 0.14.0 добавляет поддержку затенения.
sbt-assembly может скрывать классы из ваших проектов или из зависимостей библиотеки. При поддержке ссылок Jar Jar преобразование байт-кода (через ASM) используется для изменения ссылок на переименованные классы.
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "shadeio.@1").inAll
)
Комментарии:
1. Спасибо. Поддерживает ли sbt-assembly что-либо подобное shade?
2. Значит, в sbt нет решения проблемы затенения? Действительно ли я должен перейти на maven? Это просто…
3. На Github возникла проблема с петицией по поводу этой функции — github.com/sbt/sbt-assembly/issues/156
4. И теперь поддержка shade была объединена в sbt # master !