运行 一个 gradle 任务多次使用不同的参数
Running a gradle task multiple times with different parameters
我正在尝试编写一个 gradle 任务,它将缩小我项目的所有 javascript 文件。我正在使用 gradle 库:com.eriwen.gradle.js
。该库包含一个名为 minifyJs
的任务,我们在其中定义要缩小的源文件和缩小文件的目标:
minifyJs {
source = file(sourcePathString)
dest = file(targetPathString)
}
我想做的是为我项目中的每个 javascript 文件调用执行此任务,并在每个文件的新路径中生成它的缩小版本。这将需要我每次使用不同的 source
和 dest
值多次 运行 minifyJs
任务,但我似乎无法找到解决方法这个。有人建议我们使用循环为每个 javascript 文件创建一个 type: minifyJs
的新任务,但这需要大量时间并且会创建 250 多个任务,即根本没有效果。
由于在另一个任务中调用一个任务不起作用(并且使用 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')
}
}
}
这显然行不通,因为我们不能在另一个任务中调用 minifyJs
。
我真的很抱歉,这个差距在 gradle-js-plugin.
中继续存在
生成任务不行,建议你write a custom task under buildSrc
combining my JsMinifier and the MinifyJsTask。
如果你愿意等8个小时左右,我可以稍后再写一个实现。
编辑:这是一个 gist for a ClosureMinifyTask 你可以放入 buildSrc/src/main/groovy/com/eriwen/gradle/js/tasks
它会单独缩小每个文件并生成单独的源映射文件等。
buildSrc/build.gradle:
repositories {
mavenCentral()
}
dependencies {
compile localGroovy()
compile gradleApi()
compile ('com.google.javascript:closure-compiler:v20151015') {
exclude module: 'junit'
}
}
示例用法:
task mini(type: com.foo.bar.ClosureMinifyTask) {
source = "src/js"
dest = "${buildDir}/js/minified"
}
我正在尝试编写一个 gradle 任务,它将缩小我项目的所有 javascript 文件。我正在使用 gradle 库:com.eriwen.gradle.js
。该库包含一个名为 minifyJs
的任务,我们在其中定义要缩小的源文件和缩小文件的目标:
minifyJs {
source = file(sourcePathString)
dest = file(targetPathString)
}
我想做的是为我项目中的每个 javascript 文件调用执行此任务,并在每个文件的新路径中生成它的缩小版本。这将需要我每次使用不同的 source
和 dest
值多次 运行 minifyJs
任务,但我似乎无法找到解决方法这个。有人建议我们使用循环为每个 javascript 文件创建一个 type: minifyJs
的新任务,但这需要大量时间并且会创建 250 多个任务,即根本没有效果。
由于在另一个任务中调用一个任务不起作用(并且使用 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')
}
}
}
这显然行不通,因为我们不能在另一个任务中调用 minifyJs
。
我真的很抱歉,这个差距在 gradle-js-plugin.
中继续存在生成任务不行,建议你write a custom task under buildSrc
combining my JsMinifier and the MinifyJsTask。
如果你愿意等8个小时左右,我可以稍后再写一个实现。
编辑:这是一个 gist for a ClosureMinifyTask 你可以放入 buildSrc/src/main/groovy/com/eriwen/gradle/js/tasks
它会单独缩小每个文件并生成单独的源映射文件等。
buildSrc/build.gradle:
repositories {
mavenCentral()
}
dependencies {
compile localGroovy()
compile gradleApi()
compile ('com.google.javascript:closure-compiler:v20151015') {
exclude module: 'junit'
}
}
示例用法:
task mini(type: com.foo.bar.ClosureMinifyTask) {
source = "src/js"
dest = "${buildDir}/js/minified"
}