我有点像Grails的新手。我有一个可以在Eclipse中正常工作的应用程序但是当我在生产中部署因为缺少依赖性而崩溃时。
当我运行依赖关系报告时,它显示所有依赖关系都会自动出现在“build”中,但缺少“runtime”。
将依赖项迁移到运行时的最佳方法是什么(我希望)它们会被复制到我的war文件中?
另外,我正在使用清洁剂插件。这在开发中运行良好,但是“运行时”中缺少依赖项,因此会出现问题。例如,如果我手动将其中一个依赖项添加到BuildConfig.groovy(“org.owasp.antisamy:antisamy:1.4.3”)中,那么grails就会出现此错误:
加载器约束违规:加载器(实例)先前为名为“org / xml / sax / SAXParseException”的其他类型启动加载
我假设这是一个类路径问题,但我不确定为什么只有当我手动添加依赖项时才会发生这种情况 - 当然它一直存在?
答案 0 :(得分:2)
您是对的,您必须向BuildConfig.groovy添加缺少的运行时依赖项。最简单的方法是将它们从插件的BuildConfig.groovy复制到您的应用程序中。您还应该为相应的grails插件引发JIRA,以便在上游进行修复。
Maven存储库中有很多罐子,它们的pom文件中没有正确定义它们的依赖关系。 有一种方法可以通过关闭传递性来解决BuildConfig.groovy中的问题:
runtime('org.owasp.antisamy:antisamy:1.4.3') {
transitive = false
}
您也可以尝试使用例如仅排除特定依赖项,而不是'transitive = false'。
excludes "xml-apis", "xerces"
在'runtime'闭包内。