2017-10-06 104 views
0

我正在嘗試在Gradle中實現縮小任務。以下是我的代碼: -Gradle中的縮小任務

plugins { 
    id "com.eriwen.gradle.js" version "2.14.1" 
} 

import com.eriwen.gradle.js.tasks.MinifyJsTask  
task minify() { 
     def index  = 1 
     def dynNames = [] 
     javascript.source { 
      custom { 
       js { 
        srcDir "$pExplodedFolderPath" 
        include "**/*.js" 
        exclude "**/*.min.js" 
       } 
      } 
     } 

     javascript.source.custom.js.files.eachWithIndex {fileSrc, idx -> 
      def dynName = "minifyTask_${index++}" 

      task "${dynName}"(type:MinifyJsTask) { 

       source = file(fileSrc.absolutePath) 
       dest = "/Users/user.name/Documents/" + fileSrc.getParentFile().getName() + "/" + fileSrc.name + ".min.js" 
       closure { 
        warningLevel = 'DEBUG' 
         compilationLevel = 'SIMPLE_OPTIMIZATIONS' 
       } 

      } 

      dynNames << dynName 
     } 

     dependsOn dynNames 

    } 

當我運行它,它打印「無源」的所有文件。任何人都可以在這裏幫助我做錯嗎?

回答

1

你忘了把你的任務動作包裝到doLast {}。您編寫代碼的方式在配置階段執行,並始終執行,而不管任務是否應運行。

+0

但是,如果我'println',我可以看到所有文件。這不是說它應該工作嗎? 如果不是,你能通過我的代碼給我一個小例子嗎?哪一部分放在doLast中? – user3279692

+1

正如我所說的,你的代碼**是**運行,但在錯誤的時間**。在Gradle中,您有初始化階段,配置階段和執行階段。你的代碼是在配置階段運行,不管任務是否應該運行與否,並在執行階段,有沒有爲你做任務,因此將被跳過,'NO-SOURCE'。 – Vampire

+0

吸血鬼:如果你可以根據我的代碼給出一個例子,那真的很有幫助。我知道搖籃的三個階段,但只要我看到的例子,我沒有看到需要doLast。例如: https://raw.githubusercontent.com/Canadensys/canadensys-common/master/gradle/canadensys_web_build.gradle 多一點幫助請求。 謝謝 – user3279692