如何将 Java JAR 文件添加到 Grails 项目?

Posted

技术标签:

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

我有几个 Java/Maven 项目想在 Grails 2.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。在每种情况下,grails compile 都会产生以下结果:编译失败,无法解析对任一 JAR 中任何类的每个引用。

知道我错过了什么吗?

【问题讨论】:

这真的很奇怪,因为这些选项中的任何一个都应该起作用...您不会碰巧使用比运行 Grails 的 Java 版本更新的 Java 版本来编译 JAR 中的类吗?我曾经在 PostgreSQL 驱动程序 jar 上遇到过类似的问题,这就是原因。 你能用jar tf lib.jar | grep mypackage.MyClass验证jar文件是否包含缺少的类吗? 我过去曾被类似的事情所困扰......我忘记了import我正在使用的课程。 【参考方案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 文件夹中应该可以解决问题。我们目前正在使用相同的方法,没有问题。

【讨论】:

默认的 lib 文件夹在 Grails 3.0 中消失了。 grails.github.io/grails-doc/3.0.x/guide/single.html#upgrading --> "解析JAR文件应该使用依赖解析"

以上是关于如何将 Java JAR 文件添加到 Grails 项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何将java打包成jar,如何将JNI的.so库和jar添加到应用APK中

Grails:Ivy:Google 代码:如何将 Google 代码依赖项添加到 Grails?

使用 gradle 将资源、配置文件添加到您的 jar 中

如何使用 Gradle 将 jar 文件添加到 libgdx 项目

如何将包目录结构添加到我的jar中

如何将库添加到我的.jar文件中