使用不同的参数多次运行gradle任务

时间:2015-12-09 14:36:09

标签: javascript gradle minify

我正在尝试编写一个gradle任务,它将缩小我所有项目的javascript文件。我使用的是gradle库:smith,joe j. --->joe (need result as) smith,alan ---->alan (need result as) 。该库包含一个名为com.eriwen.gradle.js的任务,我们在其中定义要缩小的源文件和缩小文件的目标:

minifyJs

我想要做的是为我的项目中的每个javascript文件调用执行此任务,并在EACH文件的新路径中生成它的缩小版本。这需要我每次多次运行minifyJs { source = file(sourcePathString) dest = file(targetPathString) } 任务,使用不同的minifyJssource值,但我似乎找不到如何执行此操作的解决方案。有人建议我们使用循环为每个javascript文件创建dest的新任务,但这需要花费大量时间,并且会创建250多个任务,即完全无效。

由于在另一个任务中调用任务不起作用(使用type: minifyJs是不好的做法)我基本上寻找一种可以实现此目的的解决方法:

task.execute()

由于我们无法在另一项任务中调用task customMinify { def jsFileTree = fileTree('my/javascript/files') jsFileTree.forEach { def jsFile = it minifyJs { source = file(jsFile.getPath()) dest = file('new/path/to/file.js') } } } ,因此显然无法正常工作。

1 个答案:

答案 0 :(得分:1)

我很遗憾 gradle-js-plugin 中存在这种差距。

由于生成任务不起作用,我建议您buildSrc buildSrc/src/main/groovy/com/eriwen/gradle/js/taskswrite a custom taskJsMinifier。{/ p>

如果您愿意等待8个小时左右,如果您愿意,我可以稍后再写一个实现。

编辑:这是MinifyJsTask你可以投入repositories { mavenCentral() } dependencies { compile localGroovy() compile gradleApi() compile ('com.google.javascript:closure-compiler:v20151015') { exclude module: 'junit' } } 并且它会单独缩小每个文件并生成单独的源地图文件等。

buildSrc /的build.gradle:

task mini(type: com.foo.bar.ClosureMinifyTask) {
    source = "src/js"
    dest = "${buildDir}/js/minified"
}

样本用法:

-tab1.php
-tab2.php
-/js/functions.js