grails - 当部署为 WAR 时,Grails 3 中不会编译 Less CSS

标签 grails gradle less grails-3.0

我在以下环境中有一个 grails 应用程序:

| Grails 版本:3.0.9 | Groovy 版本:2.4.5 | JVM版本:1.8.0_60

我安装了以下插件:

com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0 com.bertramlabs.plugins:less-asset-pipeline:2.6.7

在我的本地开发环境中,我的 less 文件已成功编译,并且一切都按预期工作。然而,当部署到生产环境时,less 并没有被预编译成 css(据我所知)。

我认为本地环境良好是因为 less-asset-pipeline 插件默认使用 less4j 编译器。

我已尝试按照有关 Git 存储库的以下文档进行操作:

https://github.com/bertramdev/asset-pipeline https://github.com/bertramdev/less-asset-pipeline

如果我运行 .gradelw assetCompile,我会看到 Assets 管道包含常规 css 文件,但对 less 文件的引用被忽略(或失败)。

这是 gradle 构建文件,我删除了一些条目,以便更容易查找是否缺少任何内容:

buildscript {
    ext {
        grailsVersion = project.grailsVersion
    }
    repositories {
        mavenLocal()
        maven { url "https://repo.grails.org/grails/core" }

        // Custom maven repo for the cloudinary plugin
        // maven { url "http://dl.bintray.com/infinit/infinit-opensource" }
    }
    dependencies {
        classpath "org.grails:grails-gradle-plugin:$grailsVersion"
        classpath 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0'
    }
}

plugins {
    id "io.spring.dependency-management" version "0.5.2.RELEASE"
}

version "0.1"
group "mchq.admin"

apply plugin: "spring-boot"
apply plugin: "war"
apply plugin: "asset-pipeline"
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: "org.grails.grails-web"
apply plugin: "org.grails.grails-gsp"

ext {
    grailsVersion = project.grailsVersion
    gradleWrapperVersion = project.gradleWrapperVersion
}

assets {
    minifyJs = true
    minifyCss = true
}

repositories {
    mavenLocal()
    maven { url "https://repo.grails.org/grails/core" }
    maven { url "https://repo.grails.org/grails/repo" }

    // Custom maven repo for the cloudinary plugin
    maven { url "http://dl.bintray.com/infinit/infinit-opensource" }

    maven { url "https://repo1.maven.org/maven2" }
}

dependencyManagement {
    imports {
        mavenBom "org.grails:grails-bom:$grailsVersion"
    }
    applyMavenExclusions false
}

dependencies {
    compile "org.springframework.boot:spring-boot-starter-logging"
    compile "org.springframework.boot:spring-boot-starter-actuator"
    compile "org.springframework.boot:spring-boot-autoconfigure"
    provided "org.springframework.boot:spring-boot-starter-tomcat"
    compile "org.grails:grails-dependencies"
    compile "org.grails:grails-web-boot"

    compile "org.grails.plugins:hibernate"
    compile "org.grails.plugins:cache"
    compile "org.hibernate:hibernate-ehcache"
    compile "org.grails.plugins:scaffolding"


    compile 'org.grails.plugins:spring-security-core:3.0.0.M1'

    compile "org.grails.plugins:mail:2.0.0.RC2"

    runtime 'mysql:mysql-connector-java:5.1.37'

    runtime "org.grails.plugins:asset-pipeline"

    compile 'com.bertramlabs.plugins:less-asset-pipeline:2.6.7'


    // Note: It is recommended to update to a more robust driver (Chrome, Firefox etc.)
    testRuntime 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.44.0'

    console "org.grails:grails-console"
}

task wrapper(type: Wrapper) {
    gradleVersion = gradleWrapperVersion
}

task stage() {
    dependsOn clean, war
}
tasks.stage.doLast() {
    delete fileTree(dir: "build/distributions")
    delete fileTree(dir: "build/assetCompile")
    delete fileTree(dir: "build/distributions")
    delete fileTree(dir: "build/libs", exclude: "*.war")
}
war.mustRunAfter clean

奇怪的是,如果我向构建文件的 asset {} 部分添加任何内容,终端内的所有构建都会失败,并且会挂起。

非常欢迎任何有关确保 less 文件预编译的指示!

谢谢

最佳答案

这就是您的 build.gradle 对于 less 插件的外观

buildscript {
    dependencies {        
        classpath 'com.bertramlabs.plugins:less-asset-pipeline:2.6.7'
    }
}
dependencies {
    runtime 'com.bertramlabs.plugins:less-asset-pipeline:2.6.7'
}

您还应该获取最新版本的 Assets 管道

关于grails - 当部署为 WAR 时,Grails 3 中不会编译 Less CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34133090/

相关文章:

grails - Grails在每个标签中获取ID

grails - Grails和Nexmo插件

android - 使用Android Studio 3.5中的Build Variant重命名应用程序的存档名称

java - springdoc-openapi-ui的Gradle依赖关系

gradle - 如何从Web应用程序或任何Java API发送gradle任务指令

grails - 如何配置Grails插件以覆盖 “parent”应用程序的Log4J设置?

java - Vaadin + TabSheet + Grails Service = 当前线程没有 session

asp.net-mvc - Lesscss 和 ASP.NET MVC

css - 条件不工作少

html - 在 Twitter Bootstrap 中更改 .table-bordered 的线条颜色