如何将 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?