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

Static resource issue with upgrading from grails 3 to 4

我们编写了一个自定义 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 和应用程序 returns 静态文件。

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

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

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

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

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

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

bootRun {
    addResources = true
}

到...

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

完成后,重新编译 jar,并将其导入到另一个项目中,该项目开始成功地为项目根目录中生成的 json 提供服务。