简体   繁体   English

如何使用Maven pom.xml使用sikulix api的本机库创建多平台可执行jar?

[英]How to create multiplatform executable jar with native libraries for sikulix api using maven pom.xml?

I have problem creating executable single jar dependent on sikulixapi. 我在创建依赖sikulixapi的可执行单个jar时遇到问题。

Relevant parts from pom.xml pom.xml的相关部分

<dependencies>
    <dependency>
            <groupId>com.sikulix</groupId>
            <artifactId>sikulixapi</artifactId>
            <version>1.1.0</version>
    </dependency>
</dependencies>

I am using maven-assembly-plugin. 我正在使用maven-assembly-plugin。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <descriptorRefs>
           <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>                                          
                <mainClass>com.myProject.myClass</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>                    
    </executions>                                                
</plugin>

I am able to produce working jar on windows. 我能够在Windows上生产工作 jar contains sikulixlibs directory in jar root and everything works OK on windows platform. jarjar根目录中包含sikulixlibs目录,并且在Windows平台上一切正常。

But I would like to produce jar working multiplatform. 但是我想生产可以在多平台上运行的jar jar created on windows contains only windows subdirectory in sikulixlibs and due to this fact there are missing native binary code when calling in linux. 在Windows上创建的jar仅包含sikulixlibs中的Windows子目录,由于这个事实,在Linux中调用时缺少本机二进制代码。

[error] RunTimeINIT:  *** terminating: libs to export not found on above classpath: /sikulixlibs/linux/libs64

How to include all linux/windows/OSX native libraries into produced jar ? 如何将所有linux / windows / OSX本机库包含到生产的jar中

I have edited dependecies part od pom.xml, add additional maven artifacts, one for every supported OS, and make maven producing jar including all native libraries. 我已经编辑了pom.xml的dependecies部分,添加了其他Maven工件,每个受支持的OS都添加了一个Maven工件,并使Maven生产jar包括了所有本机库。

<dependencies>
    <dependency>
        <groupId>com.sikulix</groupId>
        <artifactId>sikulixapi</artifactId>
        <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.sikulix</groupId>
        <artifactId>sikulixlibslux</artifactId>
        <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.sikulix</groupId>
        <artifactId>sikulixlibsmac</artifactId>
        <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.sikulix</groupId>
        <artifactId>sikulixlibswin</artifactId>
        <version>1.1.0</version>
    </dependency>
</dependencies>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM