如何在我的 spring boot 2 应用程序中为资产管道 (bertramlabs) 配置静态版本控制(摘要)?

how do i configure static versioning (digest) for the asset-pipeline (bertramlabs) in my spring boot 2 application?

spring开机版本:2.0.4.RELEASE 资产管道版本:3.0.3

我们正在使用这个插件,因为我们从我们的 grails 应用程序中知道它。 我们喜欢它,因为它有一个简单的配置(满足我们的要求)

现在我们正在开发一个 spring 启动应用程序,我们也使用了这个插件,我们(几乎)对它很满意。

但是当我们运行开发模式下的应用程序时,资产没有像/assets/my-styles-b5d2d7380a49af2d7ca7943a9aa74f62s.css[这样的摘要=13=]

我如何配置插件来为我们的所有资源创建摘要?

目前我们正在使用此配置:

assets {
   minifyJs = true
   minifyCss = true
   enableSourceMaps = false

   includes = ["application.js", "application.scss"]
}

我们的模板使用 thymeleaf:

<link th:href="@{/assets/application.css}" rel="stylesheet">

我找到了解决方案...

当您使用 asset-pipeline 时,您会得到一个 gradle 任务 assetCompile

创建 .war 文件时,您可以添加此 gradle 任务并用版本化文件替换所有资产。

如果您想在生产模式下使用版本控制文件,则必须使用此配置 (build.gradle)

assets {
   minifyJs = true
   minifyCss = true
   skipNonDigests = true
   packagePlugin = true

   includes = ["application.js", "application.scss"]
}

...

war {
   dependsOn 'assetCompile'
   from( "${buildDir}/assets", {
      into "/WEB-INF/classes/META-INF/assets"
   })
   baseName = '<your project>'
   enabled = true
}

就这些了。

当 运行 assetCompile 任务时,会创建一个 manifest.properties 文件。此文件包含原始文件名和版本化文件名的映射。 应用程序使用此文件来查找正确的资源,例如application.css=application-79a3c8a2f085ecefadgfca3cda6fe3d12.css

我创建了一个插件,可以在生产模式下url用摘要替换资产:

依赖关系

compile 'ch.itds.taglib:asset-pipeline-thymeleaf-taglib:1.0.0'

配置

@Configuration
public class ThymeleafConfig {
    @Bean
    public AssetDialect assetDialect() {
        return new AssetDialect();
    }
}

用法

<html xmlns:asset="https://www.itds.ch/taglib/asset">
<script asset:src="@{/assets/main.js}"></script>
</html>

asset:src="@{/assets/main.js}" 将替换为 src="/assets/main- DIGEST.js".

仅当资产管道的 developmentRuntime 被禁用时才会发生替换。

更多详细信息可在我的博客上找到 post:https://kobelnet.ch/Blog/2019/03/12/assetpipelinethymeleaftaglib