2017-10-06 65 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