Я пытаюсь создать однокартовое приложение map-Reduce java, которое может работать локально или на EMR Amazon.
Согласно этому вопросу , следует использовать shade-plugin вместо сборка: одиночная . Однако при наличии подписанных jar-файлов в списке зависимостей люди обычно удаляют определенные файлы через строки:
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/*SF</exclude>
</excludes>
</filter>
</filters>
Однако это приводит к ошибке:
Исключение в thread "main" java .lang.SecurityException: недопустимый дайджест файла подписи для основных атрибутов Manifest
при запуске с командой maven clean compile package shade:shade
Проверка файла JAR показывает файлы
META-INF/DEV.SF
META-INF/DEV.DSA
META-INF/BCKEY.SF
META-INF/BCKEY.DSA
Я могу устранить их с помощью команды: zip -d target/CCAR.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*SF'
, но каждый раз это трудная задача.
Есть ли способ заставить maven правильно использовать список исключений, или что-то еще, что может происходить?
Я использую Shade-плагин 2.4.3