我最近了解了grails并开始使用它,我知道grails是一种很棒的语言,它对快速开发很有帮助,但我不明白为什么grails没有良好的向后兼容性,我使用grails 2.3。 8和我的项目的grails 2.4,但互联网上的许多示例代码是2.2或更少,并且将它们转换为2.3.8或2.4并不是时间有效,因为从一个版本到另一个版本有很多变化。有时虽然我做了任何正确的事情,但每件事都必须像Grails 2.1或2.2一样工作,但有些事情仍然存在。
我错了吗?我跳过了一些使转换版本变得如此困难的事情?
最重要的是,我现在正在开发的项目的保证是否与将来出现的更高版本的grails兼容?
答案 0 :(得分:2)
没有什么能保证您的项目与Grails的未来版本兼容。事实上,根据我自己的经验,他们不会。随着Grails成熟为更高版本,事情往往会发生变化,有时也会发生根本变化。
同样适用于向后兼容性。
您需要做的就是查看Grails文档的introduction section,了解版本之间的变化频率。很多时候,这些更改需要对旧项目进行大量重构才能升级它们。我仍然有几个大型项目在Grails的1.3.x分支上运行,因为我们没有资源(时间)来完成并升级它们。
此升级过程通常涉及创建一个新的空项目,然后将代码从旧项目缓慢移动到新项目中,更新代码以反映执行相同操作和测试的更新方法。对于拥有100多个Domain类,1000多个GSP,50多个服务和数十万行测试的项目来说,这并不容易。
答案 1 :(得分:2)
Grails开发团队足够勇敢,能够做出与过去相悖的变革。我认为这是一个很棒的功能--Grails不会骑死马。
对我来说,大多数变化似乎都不太激进。大多数时候,我跳过2-3版本,然后在不到一天的时间内将我的应用程序升级到当前的稳定版本。这也有助于我了解新功能。
如果您不知道如何升级,最安全的方法是使用grails upgrade
命令。只需逐步增加版本号并进行升级并重新运行测试(是的,测试可以帮助您完成升级过程:-)。如果测试失败,请查看伟大的更改日志和“Grails x.y中有什么新内容?”文档的各个部分。
通常,将旧的grails版本应用程序与新的空目标版本项目与BeyondCompare等良好的比较工具进行比较也很有帮助。这样您就可以轻松发现更改的配置。
希望有所帮助
更新:当您不熟悉“所有这些网络概念”时,您应首先决定要使用的平台。如果它是java生态系统,Grails是市场上最好的webframework :-)否则PHP,Rails,DJango等也可能是匹配。
因此,如果您想学习Grails(以及Grails所有这些webconcepts),我建议您开始阅读Guide,它将告诉您Grails的工作原理。如果您需要更多示例,我可以建议Apress发布的“Grails 2的权威指南”。它涵盖了与指南基本相同的内容,但它通过引导您完成构建示例应用程序的过程来实现。
说到你在网上找到的样本......一旦你更好地了解了这个框架,你就会知道如何处理这些例子 - 但是没有银弹......