从 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 提供服务。
我们编写了一个自定义 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 提供服务。