簡體   English   中英

使用不同的參數多次運行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文件執行此任務,並在每個文件的新路徑中生成它的縮小版本。 這需要我跑minifyJs多次以不同每次任務sourcedest的值,但我似乎無法找到如何做到這一點的解決方案。 有人建議我們使用循環創建一個新的任務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下結合我的JsMinifierMinifyJsTask 編寫一個自定義任務

如果您願意等待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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM