如何在Grails项目(IntelliJ模块依赖项)的依赖项中使用Hibernate?

时间:2012-03-20 13:58:06

标签: grails intellij-idea

我有一个引用Java库的Grail应用程序(作为IntelliJ模块依赖项)。这是有效的,但只要我将hibernate添加为Java库的依赖项,Grails将不再运行。

Loading Grails 2.0.1
Error Error executing script RunApp: Provider for javax.xml.parsers.SAXParserFactory cannot be found (Use --stacktrace to see the full trace)

在我的Java模块中,我正在使用以下内容添加hibernate:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>4.0.0.Final</version>
</dependency>

我看不出有什么好办法。 Grails依赖项报告未显示任何冲突的库。如果hibernate插件安装在Grails应用程序中,则会发生错误。

请记住(在这种情况下)Java库是而不是通过BuildConfig.groovy合并。它被合并为IntelliJ模块依赖项。如果我通过BuildConfig.groovy将模块合并为jar,一切正常,但我无法进入Java代码。

澄清:

根据JetBrains人员,Java库既包含IntelliJ模块依赖项,也包含在BuildConfig.groovy中。从命令行执行时,项目有效,这只是从IDE启动时的一个问题。

建议?

2 个答案:

答案 0 :(得分:2)

将对java库的依赖关系返回到BuildConfig.groovy并使用IDEA的最新版本:http://confluence.jetbrains.net/display/IDEADEV/IDEA+11.1+EAP。导航应该可以正常工作。

答案 1 :(得分:0)

经过实验,我偶然发现以下情况似乎工作得很好(至少在IDEA 11.1中):

  • 应该从中引用您的Java库JAR BuildConfig.groovy(我们使用Maven,所以我们必须添加本地Maven 回购)
  • 同时引用您的模块作为Grails模块的模块依赖性
  • (这很关键)在grails项目的运行配置中,取消选中“add --classpath ...”选项

模块依赖项为您提供:

  • 立即从Grails项目中了解Java类及其方法
  • 支持从Grails项目中加入Java代码。

BuildConfig参考为您提供:

  • 支持grails命令,包括run-app(这是IntelliJ在运行/调试项目时启动的方式)

如果你选中了--classpath选项,那么你就会弄清楚grails解析它的依赖关系的方式。可能有更好的方法来做到这一点,但我还没有找到它。

附加说明

grails和maven的交互中存在一个错误,如果没有更改pom.xml,则会导致grails不从本地Maven 3存储库中提取依赖关系。

因此,我们的完整依赖项刷新周期如下所示:

  • 转到顶部
  • mvn clean install
  • 在回购中找到相关的POM文件并触摸它们
  • 返回grails app目录和grails refresh-dependencies
  • 运行应用

只有在对上游Java库进行更新时才需要执行此操作。

从Jet Brains向谢尔盖提示跟踪那个人。