我目前正致力于将Groovy与现有Java项目集成.Groovy脚本基本上将XML解析为对象,然后使用现有的DAO来保存,更新等.我有2个项目.一个时髦.一个java.使用Maven(我使用gmaven插件),构建Java然后构建Groovy项目.
如果需要,我希望能够从Java项目调用Groovy脚本,反之亦然.我确信有办法做到这一点,但我无法做到这一点.
例如,我的Java类是
State(1 Field)
StateDAO
Run Code Online (Sandbox Code Playgroud)
要调用的Groovy脚本基本上解析XML文档,然后使用带有值s的DAO填充表,现在我想要它做的就是将它发布到数据库.
如果您有任何建议,请告诉我.谢谢!
Pet*_*ser 24
一般来说,有两种方法可以将Groovy与Java集成:
使用1.如果需要"脚本"解决方案,并且要执行的Groovy代码仅在运行时已知.例如,代码可以从数据库加载,或者输入GUI屏幕.如果您只是想通过在Groovy中编写应用程序的某些部分来使您的生活更轻松,请使用2.两个典型的示例,其中可以快速得到回报的是XML解析和测试(当然还有更多).
假设您对2.更感兴趣,可以单独或一起编译Groovy和Java.如果单独编译它们,静态引用只能朝一个方向进行,就像你有两个Java模块一样.如果将它们一起编译,可以任意混合使用Groovy和Java代码,就好像它是同一模块中的所有Java代码一样.
通过称为联合编译的Groovy编译器功能,可以将Java和Groovy代码编译在一起.不幸的是,GMaven在联合编译方面存在严重问题,并且没有任何迹象表明这种情况很快就会发生变化.对于较小的项目,你可能会逃脱它,但对于较大的项目,它会咬你(我去过那里).有解决方案,但它们不是免费的.如果您对(G)Maven替代品持开放态度,请考虑切换到Gradle,它具有更好的Groovy支持.(免责声明:我是Gradle的开发者之一.)
如果您决定坚持GMaven,请确保正确配置.我看到的几乎每个项目都在这一步都失败了,往往没有意识到.GMaven文档已过时,但Groovy邮件列表包含有关该主题的几篇帖子.您也可以从Spock(我自己的项目之一)复制配置.
要启用GMaven联合编译,请添加generateStubs目标.只要你的项目在没有这个目标的情况下编译,就把它留下来.还有一个generateTestStubs目标,但很少需要它.
这是短篇小说.从长远来看,请查看即将发布的Manning一书" Making Java Groovy".(我与作者无关.)
对于上面提到的Peter的#1建议,我将一组使用Java的示例放在一个博客文章中运行Groovy脚本 ,随后在github上附带代码示例.我也可以支持他关于GMaven和联合编译的评论 - 它可行,但最终会导致更多的问题而不是它的价值.关于Gradle的+1也是如此.虽然我使用它进行生产的大多数经验都是使用Java源码和Groovy测试代码,但到目前为止它对我来说完美无缺.祝你好运!