我正在创建一个Grails插件作为复杂产品的包装器.该产品与hibernate等其他产品有很多依赖关系.问题是,grails具有一些相同的依赖关系,但具有不同的版本.
例如. Grails – >休眠3.6.7
其他产品 – >休眠3.5.6
例如. Grails – >休眠3.6.7
其他产品 – >休眠3.5.6
Grails如何处理插件依赖项? Grails是否为每个插件创建一个单独的ClassLoader?它是可配置的吗?
提前致谢!
Grails有一个依赖解析机制,可以解决以下依赖关系之间的冲突:
> Grails本身
> Grails应用程序
>应用程序的插件
>插件依赖项
只需确保指定插件所依赖的内容,并让Grails的依赖关系解决方案来处理其余部分. Grails历史上使用Ivy进行依赖性解析,但从Grails 2.3.0开始,默认是Maven / Aether,可以选择使用Ivy.
有时,在应用程序中,您需要覆盖依赖项解析所做出的选择,例如:排除传递依赖或强制使用特定的库版本,您可以在BuildConfig.groovy中完成所有这些操作
像往常一样,Grails参考文档提供了非常全面的this topic报道.
更新
除了下面的注释之外,如果将JAR放在应用程序的lib目录中,它将被依赖项解析忽略并直接放在类路径上.所以你通常不应该这样做.而是在BuildConfig.groovy的dependencies部分中指定JAR及其版本.
更新2
指定JAR的语法是
<scope> <group>:<artifact>:<version>
组,工件和版本共同标识要下载的内容(JAR),而范围指定您希望如何使用JAR.查找特定JAR的组,工件和版本的最简单方法是search a Maven repository.
Read this了解您可以使用的不同范围.