Плагин Maven shade Packaging DLL

Мне нужно добавить в проект JNI-модуль.

Я устанавливаю модуль в Maven как два разных артефакта: библиотека jar:

mvn install:install-file -DgroupId=com.test -DartifactId=ssa -Dversion=1.0 -Dpackaging=jar -Dfile=ssa.jar

и библиотека времени выполнения с DLL

mvn install:install-file -DgroupId=com.sirio -Dpackaging=ddl -DartifactId=ssa-runtime -classifier=windows-x86 -Dversion=1.0 -Dfile=SSADll.dll

В моем проекте maven я добавляю эти зависимости:

    <dependency>
        <groupId>com.test</groupId>
        <artifactId>ssa</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>com.test</groupId>
        <artifactId>ssa-runtime</artifactId>
        <classifier>windows-${arch}</classifier>
        <type>dll</type>
        <version>1.0</version>
        <scope>runtime</scope>
    </dependency>

Моя проблема в том, что когда я запускаю тень плагина, чтобы создать банку с зависимостями, я получаю ошибку:

Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project ....: Error creating shaded jar: error in opening zip file sirio\ssa-runtime\1.0\ssa-runtime-1.0-windows-x86.dll 

Как я могу сказать, что теневой плагин не распаковывает dll?

Ответ 1

это решение работало для моего проекта JavaFX-OpenCV

  1. упакуйте ваш проект без DLL файлов.
  2. скопируйте и вставьте свои DLL файлы в директорию jar.
  3. Теперь вы можете запустить ваше приложение, потому что все DLL файлы теперь находятся в classpath вашего jar-приложения.

Ваш каталог должен быть таким:
/target/application.jar
/target/your_DLL_files.dll