Java Maven shade插件封装DLL

Java Maven shade插件封装DLL,java,maven,dll,Java,Maven,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-runti

我必须向我的项目中添加一个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>

如何告诉shade插件不要解压缩dll?

此解决方案适用于我的JavaFX OpenCV项目

  • 在不使用
    DLL
    文件的情况下打包项目
  • DLL
    文件复制并粘贴到jar文件目录中
  • 现在可以运行应用程序了,因为所有
    DLL
    文件现在都位于jar应用程序的类路径上
  • 您的目录应如下所示:
    /target/application.jar

    /target/your_DLL_files.DLL

    maven shade插件旨在对jar文件进行着色,这些文件类似于zip文件,这就是错误显示的内容。除此之外,你不能。您可以将dll打包成一个简单的jar文件,这个文件应该可以解决这个问题。@khmarbaise如果您解释一下如何解决这个问题,可能会很有用。由于问题与OP完全相同,我很想知道如何解决这个问题。
    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