如何使用 maven pom.xml 为 sikulix api 创建带有本机库的多平台可执行 jar?
How to create multiplatform executable jar with native libraries for sikulix api using maven pom.xml?
我在创建依赖于 sikulixapi 的可执行单个 jar 时遇到问题。
相关部分来自pom.xml
<dependencies>
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
我正在使用 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>
我能够在 windows 上生成工作 jar。 jar 在 jar 根目录中包含 sikulixlibs 目录,在 windows 平台上一切正常。
但我想制作 jar 工作的多平台。在 windows 上创建的 jar 仅包含 sikulixlibs 中的 windows 子目录,因此在调用 linux 时缺少本机二进制代码。
[error] RunTimeINIT: *** terminating: libs to export not found on above classpath: /sikulixlibs/linux/libs64
如何将所有 linux/windows/OSX 本机库包含到生成的 jar 中?
我编辑了 pom.xml 的依赖项部分,添加了额外的 Maven 工件,每个受支持的工件一个 OS,并使 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>
我在创建依赖于 sikulixapi 的可执行单个 jar 时遇到问题。
相关部分来自pom.xml
<dependencies>
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
我正在使用 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>
我能够在 windows 上生成工作 jar。 jar 在 jar 根目录中包含 sikulixlibs 目录,在 windows 平台上一切正常。
但我想制作 jar 工作的多平台。在 windows 上创建的 jar 仅包含 sikulixlibs 中的 windows 子目录,因此在调用 linux 时缺少本机二进制代码。
[error] RunTimeINIT: *** terminating: libs to export not found on above classpath: /sikulixlibs/linux/libs64
如何将所有 linux/windows/OSX 本机库包含到生成的 jar 中?
我编辑了 pom.xml 的依赖项部分,添加了额外的 Maven 工件,每个受支持的工件一个 OS,并使 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>