如何将JavaJAR文件添加到Grails项目中?

如何将JavaJAR文件添加到Grails项目中?,java,grails,maven,jar,dependencies,Java,Grails,Maven,Jar,Dependencies,我有几个Java/Maven项目要在Grails2.0.4项目中使用。我尝试过各种方法,例如: 在本地maven存储库中安装JAR文件,并执行grails install dependency com.foo:my project:0.0.1-SNAPSHOT 将JAR文件复制到grails的lib文件夹中 将compile com.foo:my project:0.0.1-SNAPSHOT添加到BuildConfig.groovy 取消注释mavenLocal()并传递/home/me/.m2

我有几个Java/Maven项目要在Grails2.0.4项目中使用。我尝试过各种方法,例如:

  • 在本地maven存储库中安装JAR文件,并执行
    grails install dependency com.foo:my project:0.0.1-SNAPSHOT
  • 将JAR文件复制到grails的
    lib
    文件夹中
  • compile com.foo:my project:0.0.1-SNAPSHOT
    添加到
    BuildConfig.groovy
  • 取消注释
    mavenLocal()
    并传递
    /home/me/.m2/repository
  • 我可能尝试过其他一些事情,比如在方便的时候迷信地抛出一个
    grails clean
    。在任何情况下,
    grailscompile
    都会产生以下结果:编译失败,无法解析对任何jar中任何类的每个引用


    知道我遗漏了什么吗?

    把jar放在lib文件夹中就可以了。我们目前正在使用相同的方法,没有问题。

    将jar添加到“lib”文件夹对我来说是不够的。我必须跑:

    grails compile --refresh-dependencies
    

    在它工作之后。

    Grails刷新依赖项、清理等对我不起作用。对我来说,有效的方法是退出Grails守护进程并再次启动Grails。

    如果Grails默认不使用位于
    /lib
    中的本地.jar库(似乎Grails 3.X中的
    /lib
    文件夹默认配置被删除)实施它的简单方法是修改
    build.gradle
    ,为它添加一个本地目录依赖项

    对于几乎所有的情况,当然最好使用maven repo,但是也可以使用一些
    db供应商驱动程序
    或其他不在公共repo中的库。为此库修改
    /build.gradle
    并添加如下内容:

    dependencies {
        ...
        compile fileTree(dir: './lib', include: ['*.jar'])
        ...
    }
    
    如果需要,您可以使用另一个目录(而不是
    /lib
    ),因为您正在指定它。当然,请使用正确的作用域(例如,
    db vendor drivers
    可能已经在应用程序容器类路径中,作用域将是
    runtime
    ,而不是
    compile


    希望有帮助,

    这真的很奇怪,因为这些选项中的任何一个都应该有效。。。您没有碰巧使用比运行Grails时更新的Java版本编译JAR中的类,是吗?有一次,我在PostgreSQL驱动程序jar中遇到了类似的问题,这就是原因。你能用
    jar tf lib.jar | grep mypackage.MyClass
    ,验证jar文件是否包含缺少的类吗?我过去曾遇到过类似的情况。。。我忘记了导入我正在使用的类。默认的
    lib
    文件夹从Grails3.0开始就消失了。-->“依赖解析应该用来解析JAR文件”我不知道你为什么对古老的问题给出如此谨慎的答案。我希望这有助于某人,但我不会尝试评估它。我已经三年多没有做过任何Grails了。@EricWilson我只是第一次尝试
    Grails
    ,我发现这个问题只有要做的事情的答案,没有解释它是如何工作的。因此,我只是试图论证它是如何工作的。别担心,我不是在看你检查答案。:),我只是在有帮助的情况下才发布。