我可以轻松下载下载的sqlite4java软件库,但我不知道最好的(任何!)的方法来下载本地库并将它们放在正确的位置.
这是我的build.gradle文件:
apply plugin: 'java' /* We use Java 1.7 */ sourceCompatibility = 1.7 targetCompatibility = 1.7 version = '1.0' repositories { mavenCentral() } sourceSets { main { java.srcDir 'src' output.classesDir = 'build/main' } test { java.srcDir 'test' output.classesDir = 'build/test' } } dependencies { testCompile group: 'junit',name: 'junit',version: '4.11' compile "com.almworks.sqlite4java:sqlite4java:1.0.392" compile "com.almworks.sqlite4java:libsqlite4java-osx:1.0.392" }
但是当我运行一个简单的测试我得到:
TestTest > testsqlite4Basic Failed com.almworks.sqlite4java.sqliteException at TestTest.java:15 Caused by: java.lang.UnsatisfiedLinkError at TestTest.java:15
(我正在IntelliJ内部建立,但是正在使用gradle构建选项 – 所以我不认为ItelliJ在运行测试时填满类路径…)
我很确定我第一次尝试构建我有一些关于无法解压缩libsqlite4java-osx ZIP文件的消息,(毫不奇怪,maven中心说它的一个dylib文件).
我需要做什么才能使毕业做正确的事情?
ASIDE:我可以通过将下载的.dylib从maven缓存手动复制到我的java.library.path中列出的某个地方来运行(想想我在Mac上使用$HOME / Library / Java / Extensions).但这似乎与包含所有的.gradle文件中的所有设置和依赖关系的整个点相反,不会让我稍后分发任何东西.
目前我只知道一个这样的插件,希望能解决你的问题https://github.com/cjstehno/gradle-natives
编辑:
在你的情况下插件的问题是事实,你的依赖“com.almworks.sqlite4java:libsqlite4java-osx:1.0.392”本身是本机的lib,而不是一个包含本机lib的jar,因为我想.因此,在这种情况下,您可以简单地将依赖关系添加到构建脚本的依赖关系中,因为已经完成,然后创建自定义复制任务,将其放置在您需要的任何位置.试着用Win7上的2.6版本做,看起来像:
task copyNtiveDeps(type: Copy) { from (configurations.compile+configurations.testCompile) { include "libsqlite4java-osx-1.0.392.dylib" } into "c:\\tmp" }
在您的情况下,您只需要将“into”属性设置为java.library.path中的某个路径.第二,你可以使这个任务自动运行,具有gradO任务属性dependsOn和mustRunAfter.