0

我在使用 Grails 2.2.3 时遇到问题,当我运行grails run-wargrails war部署到 Tomcat 服务器时,Spring Security 添加的 login/auth.gsp 视图未显示在浏览器中。但是,当我执行grails run-appgrails prod run-app. 我已经做了grails clean几次,以及重新编译和刷新了依赖项。

有几点需要注意:

  • 我的login/auth.gsp视图位于我正在使用的自定义 UI 插件中。它在项目BuildConfig.groovy文件中作为就地插件。
  • 我的main.gsp模板也在那个自定义 UI 插件中。

浏览器返回 HTTP 404:

type Status report

message /processes/WEB-INF/grails-app/views/login/auth.jsp

description The requested resource is not available.

有谁知道这个问题可能是什么,或者我该如何解决?

4

4 回答 4

2

如果我没记错并且没有完全错的话,我们在工作中的项目遇到了完全相同的问题。

问题是(对你来说可能是一样的)我们为插件设置了两个版本。

一个是在application.properties中设置的

app.version=0.1

并且插件描述符中有一组

def version = "0.1"

如果您从 application.properties 中删除版本声明,它应该可以工作。插件的版本是通过插件描述符设置的,对于项目,它是通过 application.properties 设置的。我不知道我们是如何得到两个版本声明的,但我猜这要么是由于一些复制和粘贴错误,要么是 Grails 用于生成插件的 application.properties app.version

于 2013-10-30T21:47:47.453 回答
1

即使在阅读了这个帖子之后,这也让我发疯了好几天。

我正在使用 Grails 1.3.7,并且我有几个来自供应商的插件,这些插件是从 git repo 中提取的。我最近通过从 git 获取更新版本升级了一些插件并遇到了这个问题。似乎当您运行grails war它时,它会构建插件并在每个插件的根目录中创建一个 plugin.xml 文件。plugin.xml 中的元数据包含插件版本(显然是从 xxxGrailsPlugin.groovy 文件中获取的)。plugin.xml 中的版本用于命名存储插件代码的文件夹。当您更改插件版本时会出现问题,因为 Grails 似乎不会重新生成 plugin.xml 文件。 grails clean不成功。这会导致新版本的插件与旧版本一起存储在战争中,作为其文件夹名称的一部分。

一旦我浏览了插件并删除了所有 plugin.xml 文件,我就可以通过战争成功地重建它,并将其部署在 Tomcat 上,而不会得到 404。

于 2014-02-28T19:18:57.980 回答
0

我“修复”了它,但我完全不知道为什么会这样。

我记得我已经将就地插件的版本从“0.1”提升到“1.0”。从那以后,当我发动战争时,该应用程序就无法正常工作。将插件版本从 1.0 更改回 0.1 已解决此问题。

谁能解释为什么这有效?我也清理并重新编译了 UI 插件,但直到我将版本调低后才奏效。

于 2013-10-30T20:20:11.027 回答
0

当您使用插件提供资源时,您需要添加plugin属性。这个属性在大多数 Grails 标签/方法中都可用。考虑一个名为 my-plugin 的插件。

要使用资源:

g.resource(dir: "js", file:"myPluginJs.js", plugin: "myPlugin")

渲染插件视图:

render(view: 'path/to/view', plugin: "myPlugin")

当您声明插件资源文件时也是如此。

modules = {
  "my-plugin-module" {
    resource url: '/js/app.js', plugin: 'myPlugin'
  }
}
于 2013-10-30T19:22:20.637 回答