5

当我创建一个 Grails 应用程序时,它在目录中带有一些默认文件web-app

$ 查找网络应用程序
网络应用
网络应用程序/CSS
网络应用程序/css/errors.css
网络应用程序/css/main.css
网络应用程序/css/mobile.css
网络应用程序/图像
网络应用程序/图像/apple-touch-icon-retina.png
网络应用程序/图像/apple-touch-icon.png
网络应用程序/图像/favicon.ico
网络应用程序/图像/grails_logo.jpg
网络应用程序/图像/grails_logo.png
网络应用程序/图像/leftnav_btm.png
网络应用程序/图像/leftnav_midstretch.png
网络应用程序/图像/leftnav_top.png
网络应用程序/图像/皮肤
网络应用程序/图像/皮肤/database_add.png
网络应用程序/图像/皮肤/database_delete.png
网络应用程序/图像/皮肤/database_edit.png
网络应用程序/图像/皮肤/database_save.png
网络应用程序/图像/皮肤/database_table.png
网络应用程序/图像/皮肤/exclamation.png
网络应用程序/图像/皮肤/house.png
网络应用程序/图像/皮肤/信息.png
网络应用程序/图像/皮肤/shadow.jpg
网络应用程序/图像/皮肤/sorted_asc.gif
网络应用程序/图像/皮肤/sorted_desc.gif
网络应用程序/图像/spinner.gif
网络应用程序/图像/springsource.png
网络应用程序/js
网络应用程序/js/application.js

META-INF以及WEB-INF从输出中截取的文件夹)

这些文件在我的应用程序中造成混乱,并且还使用我可能想要用于我自己的资源的公共目录名称cssimages和。js

过去我手动删除了这些,但在运行后它们会自行返回,grails upgrade并在此过程中覆盖我自己的文件。

我看不出有任何理由保留这些文件。有什么我想念的吗?如果没有,我怎样才能摆脱它们并确保它们永远不会回来?

4

2 回答 2

9

根据Burt Beckwith的说法,正确的解决方案是不使用grails upgrade. 显然,这不再是升级 Grails 应用程序的推荐方法,因为它实际上只做了两件重要的事情,那就是升级版本,然后清理应用程序,以便重新下载所有内容。

小升级

从该帖子中,较小版本更改的推荐过程是:

  1. 编辑application.properties和更新版本。
  2. 然后运行grails clean以清除过时的文件。
  3. 最后运行grails compile,它会询问您是否要升级 Hibernate 和 Tomcat 插件(如果它们在 中列出BuildConfig.groovy)。

您也可以手动删除文件夹下工作文件夹中的旧插件$HOME/.grails

Burt 提供的另一个提示是:

如果添加grails.project.work.dir = 'target'BuildConfig.groovy. 然后你所有的插件都会在那里,你可以删除整个目标文件夹,所有插件都将被重新安装和/或更新,所有的类都将被重新编译。

重大升级

主要更新(例如将 1.x 应用程序升级到 2.x 应用程序)的过程涉及更多一点:

  • 在新版本的 Grails 中创建一个新的空应用程序
  • 在旧版本的 Grails 中创建一个新的空应用程序
  • 将您当前的应用程序与空的旧版本应用程序进行比较 - 这将告诉您您删除、添加和更改的内容。复制新文件,删除应该删除的内容,然后重新进行您所做的更改。请务必阅读中间 Grails 版本的发行说明和升级信息,以便了解如何进行新更改 - 例如 DataSource.groovy 中的 HSQLDB -> H2 等。不要盲目地进行相同的更改。

希望这最终会记录在官方文档中,因为这是有道理的,因为升级过程太复杂而无法有效地自动化。


新应用

然而,这并没有解释如何处理新的应用程序。当然,您可以简单地删除所有 Grails 特定的文件(除非您使用脚手架,否则我建议您这样做)。

另一种选择是将所有 Grails 特定文件移动到某个子目录中,然后手动修改(和/或重命名)main布局、CSS 文件和资源链接以指向这些新位置。

如果您仍然想使用脚手架,我建议将main.gsp布局复制到scaffolding.gsp,并创建一个新的资源模块,仅用于包含所有默认 CSS 和 JS 要求的脚手架。然后运行grails install-templates,它将为您提供用于脚手架的基本视图模板。然后,您可以轻松更改布局并添加或更新正确的资源模块。

最后,一旦您以您想要的方式获得了基本应用程序,请将其压缩并保存以备后用。这至少是一种简单的方法,只需要做一次。

注意安装模板后,
您可能不需要位于. 除非你知道你使用它们,否则它们应该被删除。artifactswarsrc/templates


最后一点,请确保您使用良好、强大的版本控制系统,例如 git 或 mercurial。如果您不小心运行,这将很容易查看已修改的内容grails upgrade,并丢弃或回滚您不想更改的文件。使用不错的 IDE 或 GUI,您通常只需单击几下即可解决此问题。

于 2012-07-20T08:11:27.267 回答
1

在 grails 项目的目录 scripts 下,您需要创建 _Events.groovy

升级脚本会触发 2 个事件,因此您可以复制现有文件,让脚本做他的事情并在最后替换那些文件。

所以它会给出类似的东西

eventStatusUpdate = { msg ->
    def listenMsg = "Please make sure you view the README for important information about changes to your source code."
    if(msg == listenMsg) {
        copy(todir: "<the dir you want to put your stuff>") {
            fileset(dir: "${basedir}/web-app") {
                include(name: "**/**")
                exclude(name: "WEB-INF/**")
                present(present: "srconly", targetdir: "${basedir}/web-app")
            }
        }
    }  
}

eventStatusFinal = { msg ->
    if(msg == "Project upgraded") {
        copy(todir: "${basedir}/web-app") {
            fileset(dir: "<the dir with your stuff...>") {
                include(name: "**/**")
                exclude(name: "WEB-INF/**")
                present(present: "srconly", targetdir: "${basedir}/web-app")
            }
        }
    }    
}
于 2012-07-16T15:14:07.693 回答