将 Gradle 与本机依赖项结合使用
2022-09-04 21:36:54
我正在尝试在Gradle项目中使用Sigar。默认情况下,Sigar 发行版提供 2 种类型的文件:
- 包含类的 JAR
- 一些原生文件(.so、dylib、.dll)
我的目的是重新打包这些文件,以便我可以将它们用作从个人 Maven 存储库按需部署和下载的依赖项。
我的第一次尝试是将依赖项定义为文件,以便在重新打包之前检查我的应用程序是否按预期工作。以下是我用于第一次测试的Gradle代码:
dependencies {
compile files("${rootDir}/lib/sigar/sigar.jar")
runtime fileTree(dir: "${rootDir}/lib/sigar/", exclude: "*.jar")
}
然后,我将Sigar本机文件重新打包到JAR中,并重命名另一个文件以匹配maven工件的规则,因为我想将它们部署在Maven存储库中。以下是我得到的:
- sigar-1.6.4.jar (包含 .class 文件)
- sigar-1.6.4-native.jar(包含 .dylib、.so 和根目录.dll文件)
下一步是在我的自定义存储库中部署这些文件。然后,我更新了我的如下:build.gradle
dependencies {
compile 'sigar:sigar:1.6.4'
runtime 'sigar:sigar:1.6.4:native'
}
不幸的是,当我做一个,新的依赖项被获取,但本机库在运行时无法再找到,因为现在我得到以下异常:gradle clean build
Error thrown in postRegister method: rethrowing <java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/CpuInfo;>
因此,我正在寻找一种解决方案来获取并将本机文件链接到我的Java应用程序,就像其他依赖项一样。任何建议,意见,建议,帮助,解决方案等都欢迎;)