Плагин 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
- упакуйте ваш проект без
DLL
файлов. - скопируйте и вставьте свои
DLL
файлы в директорию jar. - Теперь вы можете запустить ваше приложение, потому что все
DLL
файлы теперь находятся в classpath вашего jar-приложения.
Ваш каталог должен быть таким:
/target/application.jar
/target/your_DLL_files.dll