【问题标题】:Static resource issue with upgrading from grails 3 to 4从 grails 3 升级到 4 的静态资源问题
【发布时间】:2020-05-02 18:11:51
【问题描述】:

我们编写了一个自定义 jar,它实现了 swagger 使用的 OpenApi 标准的有限版本。这个jar使用ASTTransformer实现,在项目构建时生成json文件,并将生成的文件添加到项目的build/resources/main/public目录中。

我们已将此 jar 添加到我们的 Grails 3 项目中,并将以下内容添加到我们的 application.yml

grails:
    resources:
        pattern: '/*.json'

通过此设置,我们可以导航到http://server/projectRoot/openapi_v2.json,应用程序会返回静态文件。

我们现在正在将项目迁移到 Grails 4。执行项目的构建,json 文件仍在生成到相同的构建目录,但是 url 不再返回该文件。

我试图研究一下 Grails 3 和 4 之间在 application.yml 配置方面是否有任何变化,或者是否需要额外的东西。

我们确实在https://docs.grails.org/latest/guide/upgrading.html 上找到了一条关于可能将sourceResources 添加到build.gradle 中的bootRun 的注释,但这似乎并没有解决问题。

所以我的问题是,有谁知道是什么导致 Grails 4 无法正确映射到 Grails 3 能够正确映射到的公共静态资源?

【问题讨论】:

  • "我们现在正在将项目迁移到 Grails 4。执行项目的构建,json 文件仍在生成到相同的构建目录..." - 您的构建设置是否将jar 文件中的 json 文件与您使用 Grails 3 时的位置相同吗?
  • 关于何时生成文件没有特定于项目的内容。文件的生成是由 @AstTransformer 注释的 performInjectionOnAnnotatedClass 方法的实现驱动的。 @JeffScottBrown 编辑:该类实现了GlobalClassInjector
  • 嗯,我刚刚注意到 jar 项目的 build.gradle,而不是包含 jar 的项目,其中包含 addResources = true。我可能需要看看修复它并用 grails 4 重新编译 jar 是否会有所不同。
  • @JeffScottBrown 好吧,粗鲁。看起来就是这样。哈哈。我觉得我好笨。我不会想到 jar 设置会影响 jar 导入到的项目。

标签: grails grails-4


【解决方案1】:

我的问题的解决方案似乎是更新 jar 项目。生成的jar导入到的客户端项目升级到了Grails 4,但是jar项目还是Grails 3。

我将 jar 项目升级到 Grails 4,更改了...

bootRun {
    addResources = true
}

到...

bootRun {
    // addResources = true
    sourceResources sourceSets.main
}

一旦我这样做了,重新编译了 jar,并将其导入到另一个项目中,该项目开始成功地从项目根目录中提供生成的 json。

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 2014-11-12
    • 2018-07-15
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2015-09-21
    • 2015-09-10
    相关资源
    最近更新 更多