【问题标题】:How to add Java JAR files to Grails project?如何将 Java JAR 文件添加到 Grails 项目?
【发布时间】:2012-06-28 05:51:38
【问题描述】:

我有几个 Java/Maven 项目想在 Grails 2.0.4 项目中使用。我尝试了各种方法,例如:

  1. 在我的本地 maven 存储库中安装 JAR 文件,并执行 grails install-dependency com.foo:my-project:0.0.1-SNAPSHOT
  2. 将 JAR 文件复制到 grails 的 lib 文件夹中。
  3. compile com.foo:my-project:0.0.1-SNAPSHOT 添加到BuildConfig.groovy 的依赖项部分
  4. 取消注释 mavenLocal() 并传递 /home/me/.m2/repository

我可能尝试过其他一些方法,例如在方便时迷信地输入grails clean。在每种情况下,grails compile 都会产生以下结果:编译失败,无法解析对任一 JAR 中任何类的每个引用。

知道我错过了什么吗?

【问题讨论】:

  • 这真的很奇怪,因为这些选项中的任何一个都应该起作用...您不会碰巧使用比运行 Grails 的 Java 版本更新的 Java 版本来编译 JAR 中的类吗?我曾经在 PostgreSQL 驱动程序 jar 上遇到过类似的问题,这就是原因。
  • 你能用jar tf lib.jar | grep mypackage.MyClass验证jar文件是否包含缺少的类吗?
  • 我过去曾被类似的事情所困扰......我忘记了import我正在使用的课程。

标签: java grails maven jar dependencies


【解决方案1】:

如果 Grails 默认不使用位于 <GRAILS-APP-DIR>/lib 的本地 .jar 库(似乎使用 Grails 3.X /lib 文件夹默认配置已删除)执行它的简单方法是修改 build.gradle 为其添加本地目录依赖项。

对于几乎所有情况,使用 maven 存储库当然更好,但是可能有一些 db-vendor-drivers 或其他不在公共存储库中的库。为此库修改 <GRAILS-APP-DIR>/build.gradle 并添加如下内容:

dependencies {
    ...
    compile fileTree(dir: './lib', include: ['*.jar'])
    ...
}

如果您愿意,您可以使用另一个目录(不是/lib),因为您正在指定它。当然使用正确的范围(例如db-vendor-drivers,它可能已经在您的应用程序容器类路径中,范围将是runtime而不是compile

希望对你有帮助,

【讨论】:

  • 我不知道你为什么对古老的问题给出如此谨慎的答案。我希望这对某人有所帮助,但我不会尝试对其进行评估。三年多来我没有做过任何 Grails。
  • @EricWilson 我只是第一次尝试Grails...,我看到这个问题只有要做的事情的答案,但没有解释它是如何工作的。所以我只是试图争论它是如何工作的。别担心,我不是在看你检查答案:),我只会在对某人有帮助的情况下发布。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    将 jar 添加到“lib”文件夹对我来说还不够。我不得不跑:

    grails compile --refresh-dependencies
    

    在它起作用之后。

    【讨论】:

      【解决方案4】:

      将 jar 放在 lib 文件夹中应该可以解决问题。我们目前正在使用相同的方法,没有问题。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2019-05-09
      • 2010-11-23
      • 1970-01-01
      相关资源
      最近更新 更多