Как заставить Maven shade-plugin правильно удалить информацию о подписи из jars? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь создать однокартовое приложение 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

...