0

我们编写了一个自定义 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 和 Grails 4 之间在 application.yml 配置方面是否有任何变化,或者是否需要额外的东西。

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

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

4

1 回答 1

0

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

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

bootRun {
    addResources = true
}

至...

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

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

于 2020-01-16T15:18:35.607 回答