3

这似乎是一个奇怪的问题。我想将 LESS 编译成 CSS 而不在我的本地 gradle 中安装插件。有几个 gradle 插件可以将 LESS 编译成 CSS,这很棒,但我想在运行时编译和使用这些插件,而不是事先安装它们。

这可能吗?如果有一个像 CoffeeScript 这样的标准插件,那也没什么大不了的,而且很简单,但对于 LESS 却没有。我对 Gradle 很陌生,所以我不确定如何前进。显而易见的解决方案是血腥安装插件,但考虑到我不能这样做的约束,是否可以在运行时编译/使用它?

4

1 回答 1

21

在大多数情况下,您不会将插件安装到 Gradle 安装中。相反,您将插件的使用声明为build.gradle. 在构建运行时,它会解析构建脚本所需的任何插件,加载它们,然后运行构建。您列出的特定插件有点不寻常,因为(据我所知)它们尚未在可公开访问的 Maven 存储库(例如Maven CentralBintray)中发布。快速搜索后,我发现一个似乎在 Maven Central 中:

https://github.com/obecker/gradle-lesscss-plugin

要使用它,您无需提前安装任何东西。相反,您可以像这样在 build.gradle 中声明它:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'de.obqo.gradle:gradle-lesscss-plugin:1.0-1.3.3'
    }
}
apply plugin: 'lesscss'

如果你不想使用插件,你可以很容易地在 Gradle 中编译 LESS 文件,而无需使用任何插件。这是因为Gradle 插件架构构建在与您在构建脚本中使用的完全相同的 DSL 和深度 API 之上。主要区别在于意图之一;插件已以旨在在其他项目中重复使用的方式打包。

最低要求是访问执行 LESS 编译的库,以及使用它的任务声明。这是一个使用lesscss-java的快速示例。它只编译一个 LESS 文件,但它应该很容易根据您的要求进行扩展。

构建.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.lesscss:lesscss:1.3.0"
    }
}

task lessCompile << {
    def compiler = new org.lesscss.LessCompiler()
    compiler.compile(file("some.less"), file("some.css"))
}

少一些:

@mainColor: black;
body {
    background-color: @mainColor;
}

运行后gradle lessCompile,结果为some.css:

body {
  background-color: #000000;
}
于 2013-03-02T03:51:12.853 回答