[英]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文件執行此任務,並在每個文件的新路徑中生成它的縮小版本。 這需要我跑minifyJs
多次以不同每次任務source
和dest
的值,但我似乎無法找到如何做到這一點的解決方案。 有人建議我們使用循環創建一個新的任務type: 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中仍然存在這種差距。
由於無法生成任務,因此建議您在buildSrc
下結合我的JsMinifier和MinifyJsTask 編寫一個自定義任務 。
如果您願意等待8個小時左右,我願意的話可以稍后再寫一個實現。
編輯:這是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"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.