我如何设置一个使用sqlite4java的简单的gradle项目?

我正在使用sqlite4 java启动一个简单的 java测试项目,并使用java构建.

我可以轻松下载下载的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.

相关文章

安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压缩包。 创建s...
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下...
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员  ...
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整...