Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails如何处理插件依赖关系_Grails_Classloader - Fatal编程技术网

Grails如何处理插件依赖关系

Grails如何处理插件依赖关系,grails,classloader,Grails,Classloader,我正在创建一个Grails插件作为复杂产品的包装器。该产品与其他产品(如hibernate)有很多依赖关系。问题是,grails有一些相同的依赖项,但版本不同。 例如Grails->hibernate 3.6.7 其他产品->hibernate 3.5.6 Grails如何处理插件依赖关系?Grails是否为每个插件创建单独的类加载器?它是可配置的吗 提前谢谢 Grails有一个依赖项解决机制,可以解决以下依赖项之间的冲突: 圣杯本身 Grails应用程序 应用程序的插件 插件依赖关系 只需

我正在创建一个Grails插件作为复杂产品的包装器。该产品与其他产品(如hibernate)有很多依赖关系。问题是,grails有一些相同的依赖项,但版本不同。 例如Grails->hibernate 3.6.7 其他产品->hibernate 3.5.6

Grails如何处理插件依赖关系?Grails是否为每个插件创建单独的类加载器?它是可配置的吗


提前谢谢

Grails有一个依赖项解决机制,可以解决以下依赖项之间的冲突:

  • 圣杯本身
  • Grails应用程序
  • 应用程序的插件
  • 插件依赖关系
只需确保您指定了插件所依赖的内容,并让Grails的依赖解析处理其余的内容。Grails在历史上使用Ivy进行依赖项解析,但从Grails 2.3.0开始,默认值是Maven/Aether,可以选择使用Ivy

有时在应用程序中,您会希望覆盖依赖项解析所做的选择,例如排除可传递的依赖项或强制使用特定的库版本,您可以在
BuildConfig.groovy

与往常一样,Grails参考文档提供了非常全面的关于

更新 在下面的注释之后,如果将JAR放在应用程序的lib目录中,依赖项解析将忽略它,并将其直接放在类路径上。所以你通常不应该这样做。改为在
BuildConfig.groovy
dependencies
部分指定JAR及其版本

更新2 指定JAR的语法是

<scope> <group>:<artifact>:<version>


了解您可以使用的不同作用域。

谢谢您的回复。如果我将jar文件放在grails应用程序/插件的lib目录中,那么由于版本不一致,应用程序不会启动。在dependencies描述中,有一个虚拟条目
runtime'mysql:mysql connector java:5.1.18'
-看起来不像jar的名称。你能给出一个如何指定jar的提示吗?文档很好,但我感觉没有maven的知识,我仍然迷路了…谢谢更新。我还有一些悬而未决的问题——你介意看看吗?我很困惑,沃尔德马尔和拉尔夫是同一个人吗?嗨,唐,拉尔夫是我的同事。所以我们经常遇到同样的问题