gpt4 book ai didi

java - 将 Groovy 与 Java 集成

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:51 24 4
gpt4 key购买 nike

我目前正致力于将 Groovy 与现有的 Java 项目集成。 Groovy 脚本基本上将 XML 解析为对象,然后将使用现有的 DAO 来保存、更新等。我有 2 个项目。一个时髦的。一个 java 。我使用 Maven(我使用 gmaven 插件)构建 Java,然后构建 Groovy 项目。

如果需要,我希望能够从 Java 项目调用 Groovy 脚本,反之亦然。我确信有办法做到这一点,但我无法做到这一点。

例如我的 Java 类是

State(1 Field)
StateDAO

要调用的 Groovy 脚本基本上解析一个 XML 文档,然后使用 DAO 将值 s 填充到一个表中,现在我希望它做的就是将它发布到数据库中。

如果您有任何建议,请告诉我。谢谢!

最佳答案

一般来说,将 Groovy 与 Java 集成有两种方法:

  1. 使Java代码在运行时编译并执行Groovy代码
  2. 编译和打包 Groovy 代码作为构建的一部分,就像您对 Java 代码所做的那样

如果您需要“脚本”解决方案并且要执行的 Groovy 代码仅在运行时已知,请使用 1.。例如,可以从数据库加载代码,或在 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 目标,但很少需要。

这是一篇短篇小说。长话短说,请查看即将出版的曼宁书 Making Java Groovy . (我与作者无关。)

关于java - 将 Groovy 与 Java 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com