Grails如何处理插件依赖项

时间:2012-01-12 14:54:38

标签: grails classloader

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

Grails如何处理插件依赖项? Grails会为每个插件创建一个单独的ClassLoader吗?它是可配置的吗?

提前致谢!

1 个答案:

答案 0 :(得分:6)

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

  • Grails本身
  • Grails应用程序
  • 应用程序的插件
  • 插件依赖项

只需确保指定插件所依赖的内容,然后让Grails的依赖关系解决其余部分。 Grails历史上使用Ivy进行依赖性解析,但从Grails 2.3.0开始,默认是Maven / Aether,可以选择使用Ivy。

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

中完成所有这些操作

与往常一样,Grails参考文档提供了对this topic的全面报道。

更新

除了下面的评论之外,如果将JAR放在应用程序的lib目录中,它将被依赖项解析忽略并直接放在类路径上。所以你通常不应该这样做。请改为在dependencies的{​​{1}}部分中指定JAR及其版本。

更新2

指定JAR的语法是

BuildConfig.groovy

组,工件和版本共同标识要下载的 (JAR),而范围指定 您希望如何使用JAR。查找特定JAR的组,工件和版本的最简单方法是search a Maven repository

Read this了解您可以使用的不同范围。