从 grails 3 升级到 4 时的静态资源问题



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

我们将这个罐子添加到我们的 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 上发现了一个关于可能向build.gradlebootRun添加sourceResources的说明,但这似乎并没有解决它。

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

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

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

bootRun {
addResources = true
}

自。。。

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

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

最新更新