将应用程序从Grails2.2.5升级到3.0

将应用程序从Grails2.2.5升级到3.0,grails,grails-3.0,grails-2.2,Grails,Grails 3.0,Grails 2.2,我有一个正在运行的Grails应用程序,几年前从Grails2.0.0.RC1开始,一个又一个版本地更新到2.2.5。在这次更新之后,我只是偶尔做一下,因为项目已经“完成”,只做bug修复 现在我需要做很多工作,所以我计划将它升级到Grails3.0,以便使用Grails最新版本中添加的新功能 这个项目有约25个域类,约20个控制器,一系列服务,一些自定义标记库,并使用一些插件:jasper,shiro,searchable 作为一项一般性建议,委员会认为: 升级插件或应用程序(如果应用程序使用

我有一个正在运行的Grails应用程序,几年前从Grails
2.0.0.RC1开始,一个又一个版本地更新到
2.2.5
。在这次更新之后,我只是偶尔做一下,因为项目已经“完成”,只做bug修复

现在我需要做很多工作,所以我计划将它升级到Grails
3.0
,以便使用Grails最新版本中添加的新功能

这个项目有约25个域类,约20个控制器,一系列服务,一些自定义标记库,并使用一些插件:jasper,shiro,searchable

作为一项一般性建议,委员会认为:

升级插件或应用程序(如果应用程序使用多个插件,则需要先升级插件)时,最好的方法是创建一个同名的新Grails 3.0应用程序,并将源文件复制到新应用程序中的正确位置

这真的是针对我的案例的最佳方法,还是有其他方法(更快、更少痛苦)来实现这一点?你已经处理好了吗?你做了什么?

是的

我将一个项目从2.2升级到了2.4,在我创建了一个新的2.4项目并复制了所有内容之前,这个项目不会正常工作。我无法想象你用任何其他方法所做的跳跃会成功

只需吃下你最喜欢的零食,在你的DVC(git、mercurial等)中开一家分店,然后稳步前进。不会那么糟的。您面临的挑战可能是配置和缺少插件。大多数人工制品(如域和控制器)将保持不变


说到插件,请确保您需要的所有插件都是3.0兼容的。

Grails 3.0是对Grails的彻底重写,因此,正如官方文档所说,最好的方法是创建一个新的应用程序,然后首先复制到它的源文件中(
src/java
src/groovy
Grails app
)并将静态资源添加到
asset
文件夹中。接下来,您必须迁移配置(例如
Config.groovy
中的配置现在应该位于
application.yml
application.groovy
)和依赖文件(
BuildConfig.groovy
build.gradle

您提供的官方链接详细描述了整个过程。
最后,正如Emmanuel Rosa上面所说的,确保你使用的插件都是GRASES 3×X兼容的。

< P>对于将来的引用,你可以考虑那些链接作为参考:

从2升级到3并非不可能

  • 您需要查看更改日志
  • 请参阅配置和文件夹结构中的更改
  • 记住新的插件和过时的插件
  • 配置您的IDE(如果您使用了IDE)——gradle、groovy。。对于Grails3Intellij似乎是最好的选择
  • 最后,您需要进行大量测试—使用空基,使用遗留数据

  • 因为一个小项目花了我一天的时间升级

    感谢您的回复,但我也希望有人能够回答Grails2到3迁移的问题。否则我就跟你走;)。谢谢。SpringSecurity插件还不兼容!这是没有帮助的。我已经阅读了官方文件,在我的问题中也提到了它。我的问题是针对任何一个真正完成Grails2->3迁移的人的,这可以告诉我他真正遇到了什么问题。我做这件事的时间有限,所以我需要选择正确的方式,在开始之前进行评估。我经历了从grails 2到grails 3的迁移,这就是我所做的。如果这对您没有帮助,我很抱歉。您刚才复制并粘贴了模型、控制器、服务、视图和外部java/groovy源代码,没有任何问题吗?显然,这取决于应用程序的复杂性。我的很简单(6个域类),所以我一步一步地遵循文档,所有的工作都很好。我的旧应用程序是在Grails2.1.1上构建的,所以我必须在控制器中做一些更改(将代码从列表操作移动到索引),将数据源配置从dataSource.groovy移动到application.yml(使用yaml语法而不是groovy语法)。另一个很大的区别在于构建系统,所以我必须学习Gradle,并将配置从BuildConfig.groovy移动到build.Gradle。还要注意内容协商。@RickyGo嗨,你的评论至少和你的答案一样有价值,如果不是更多的话。你能把它们包括在你的答案中吗?谢谢这可能会有所帮助。这可能会给你一些提示。我还将应用程序从Grails2.5.1升级到3.1.0,其中包含35多个域和100多个控制器。疼痛难以忍受:(