Grails如何处理插件依赖项

Wal*_*mar 4 grails classloader

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

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

提前致谢!

Dón*_*nal 6

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

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

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

偶尔在应用程序中,您将要覆盖依赖项解析所做的选择,例如,排除传递依赖项或强制使用特定的库版本,您可以执行以下所有操作: BuildConfig.groovy

像往常一样,Grails参考文档提供了对该主题的非常全面的介绍.

更新

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

更新2

指定JAR的语法是

<scope> <group>:<artifact>:<version>
Run Code Online (Sandbox Code Playgroud)

组,神器,和版本共同确定什么你想下载(JAR),而范围指定如何,你要使用的JAR.查找特定JAR的组,工件和版本的最简单方法是搜索Maven存储库.

阅读本文以了解您可以使用的不同范围.