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

问题描述 投票:0回答:2

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

你好

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

现在我们正在开发一个spring boot应用程序,我们也使用了这个插件,我们(几乎)对此感到满意。

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

如何配置插件以创建所有资源的摘要?

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

assets {
   minifyJs = true
   minifyCss = true
   enableSourceMaps = false

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

我们正在使用百日咳作为我们的模板:

<link th:href="@{/assets/application.css}" rel="stylesheet">
spring-boot asset-pipeline
2个回答
1
投票

我找到了解决方案......

当您使用资产管道时,您将获得一个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


0
投票

我创建了一个插件,它可以在生产模式下使用摘要替换资产的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>

资产:src =“@ {/ assets / main.js}”将替换为src =“/ assets / main-DIGEST.js”。

仅当禁用资产管道的developmentRuntime时才会进行替换。

我的博客文章中提供了更多细节:https://kobelnet.ch/Blog/2019/03/12/assetpipelinethymeleaftaglib

© www.soinside.com 2019 - 2024. All rights reserved.