首页 > 解决方案 > Gradle:覆盖插件中的排除配置

问题描述

我正在使用 Liferays“Gradle Theme Builder”开发 Liferay 7.2 主题(WAR 风格)。我也将它配置为生成 CSS 源映射。这工作正常,除了原始 SCSS 文件没有与主题 WAR 文件一起部署——另一方面,源映射已部署。最后,浏览器中的 DevTools 向服务器询问大约 200 个不存在的 SCSS 源文件,我无法手动将其分配给本地文件(看起来 Firefox 和 Chrome 不久前删除了该功能;无论如何我在 DevTools 中玩了很多本地文件和工作区,我无法让浏览器将本地文件识别为“这些是我正在寻找的来源!”)。

我尝试配置 gradle war 任务以将这些 scss 文件包含在生成的 WAR 中,但是:Theme Builder 是一个 gradle 插件,它以war编程方式配置任务并将排除设置为**/*.scss(请参阅此处的源代码)。更改该插件是不可能的,那么我如何在我的build.gradle?

或者,我尝试在第一个 war 任务之后运行第二个 war 任务,目的是将这些 scss 文件添加到现有的 WAR 文件中(如果我想要“主题开发构建”,则可以运行另一个任务的额外好处):

task fragmentWAR(type: War) {
    group 'build'
    description 'Prepares a war with scss files'
    dependsOn war 

    from('build/buildTheme') {
        include '**/*.scss'
        exclude '**/.sass-cache'
    }
}

task fragmentDeploy {
    group 'build'
    description 'Goes to war with scss files'
    dependsOn += fragmentWAR
    dependsOn += deploy
}

deploy.mustRunAfter(fragmentWAR)

但这弄乱了 WAR 文件:一些文件现在在 WAR 中创建了两次,而另一些文件则完全丢失了。

最后,我需要一种方法将 scss 文件以及转译的 css 和 css 源映射部署到我的测试服务器中。有没有人知道如何规避由主题构建器插件配置的排除项 - 或任何其他可能对我有帮助的想法?

标签: gradleliferay

解决方案


您是否尝试过使用 generator-liferay-theme NPM 模块而不是 Gradle Theme Builder 插件?为 Liferay 7.2 使用 v9.x 的 generator-liferay-theme。

有关更多信息,请参见 https://github.com/liferay/liferay-js-themes-toolkithttps://github.com/liferay/liferay-js-themes-toolkit/tree/master/packages/generator-liferay-theme细节。

当我使用这个模块生成我的主题时,我看到 .scss 和 .css.map 都是包含在我的主题 .war 文件中的文件。

希望能帮助到你。


推荐阅读