6

我们有一个使用 Tapestry 4.1 编写的大型、笨重但相当稳定的 Web 应用程序,我们希望逐步摆脱它。为此,我们正在考虑在 Grails 中开发一些新功能。我们的客户永远不应该知道其中的区别,如果可能的话,内部人员(例如安装服务)也不应该关心——理想情况下,Grails 应用程序将与现有 Tapestry 代码在同一个 WAR 中,只需GrailsDispatcherServlet配置为更具体的路径。对现有应用程序的怪物构建过程进行最小的更改也是至关重要的——在 Gant 和 Ivy 中重做构建系统(目前是 Ant,正在过渡到 Maven)不是一种选择。如果我们可以在开发过程中使用爆炸的 WAR 进行实时重新加载,那就太好了。

那么问题来了:

  • 这可能吗?
  • 如果是这样,我从哪里开始?
  • 如果没有,下一个最好的方法是什么?
  • 我需要注意什么?

请注意,我们不会使用 GORM;我们所有的数据都来自 Web 服务,我们已经有 Java 域和消息传递层。

4

2 回答 2

2

好消息:是的,这是可能的。

坏消息:有点毛茸茸的。

至少有两种方式:

  1. 按照 Dylan 的建议,修改 Grails 构建以适应您现有的应用程序,并进行一些调整。
  2. 创建另一个 Ant 目标,将现有的 WAR 文件与 Grails 生成的 WAR 文件结合起来。

第一个选项,修改 Grails 构建。风险在于,当 Grails 更新版本时,定制和调整过的 Grails 构建可能会完全失败,并且您不会在这里或那里结束。解决这个问题需要深入了解框架如何生成构建。由于这是您第一次接触新框架,因此学习曲线可能会太陡峭。

我更喜欢第二个,因为你不需要搞乱 Grails 的构建。您需要了解底层的 web.xml 配置是如何工作的。我假设您已经拥有这些知识,因为您也已经拥有自己的 Ant 构建。可能这是阻力最小的路径。

第二种方法的缺点是在开发过程中很难有爆炸的 WAR。但是,如果您可以将旧应用程序和新应用程序分开,而无需在开发过程中将它们一起测试,那么您将在使用 Grails 的轻量级开发服务器进行开发时玩得很开心。

下一步将一点一点地使旧应用程序能够在 Grails 下作为 Grails 调用的 Java 组件运行。

于 2012-05-16T06:24:01.907 回答
1

您可以通过运行 grails install-templates 命令编辑 web.xml 的模板以更改 servlet 映射

您可以使用Ant 和 Maven(或 Gradle)来构建 Grails 应用程序,但由于不是“标准”方法,我的经验是可能需要进行一些小的调整。我使用 Ant 集成(它使用 ivy 作为依赖项)来构建并使用 Gradle 来包装 Ant 并针对特殊要求修改构建。

您可能遇到的问题是 Gant 脚本是 Grails 的核心,并且在这些脚本中发生了许多事情(取决于您使用的插件),这可能会导致尝试将两个构建合并在一起时出现问题,因为这些脚本不是用您的使用编写的记住情况。

于 2012-05-15T03:33:20.117 回答