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

2022-09-03 04:15:38

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

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

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

你知道我错过了什么吗?


答案 1

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


答案 2

如果 Grails 默认不采用位于其中的本地.jar库(似乎使用 Grails 3.X 时,文件夹默认配置已被删除),则强制实施它的简单方法是修改以为其添加本地目录依赖项。<GRAILS-APP-DIR>/lib/libbuild.gradle

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

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

如果需要,可以使用另一个目录(不是 ),因为您正在指定它。当然,使用正确的作用域(例如,对于该作用域,可能已经位于应用程序容器类路径中,gradle 中的作用域将代替 )。/libdb-vendor-driversruntimecompile

更新

从 gradle 7.0 开始使用并被删除。Insted 你可以使用 ,或者根据你是否只想把依赖关系放在 complie 类路径、运行时类路径或两者上,在 gradle 7.0 及更高版本中,你可以使用:compileruntimecompileOnlyruntimeOnlyimplementation

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

推荐