(没有这样的文件或目录)如何使gradle忽略不存在的文件

时间:2013-06-14 23:48:25

标签: gradle

当我运行命令'gradle tasks'或其他任何事实时,我收到以下错误:

Caused by: java.io.FileNotFoundException: /Users/maxit/workspace/Backbone/modules/contact-form/public/build/contact-src.js (No such file or directory)

这是我的gradle构建文件:

configurations {
        sshAntTask
 }

dependencies {
        sshAntTask 'org.apache.ant:ant-jsch:1.7.1', 'jsch:jsch:0.1.29'
 }

// Pull the plugin from Maven Central
buildscript {

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.eriwen:gradle-js-plugin:1.5.0'
    }
}

// Invoke the plugin
apply plugin: 'js'
apply plugin:'base'

def appName = "some"
def version = "0.0.1"
def jsSrcDir = 'public/js'

javascript.source {
    dev {
        js {
            srcDir jsSrcDir
            include "*.js"
            exclude "*.min.js"
        }
    }
    prod {
        js {
            srcDir jsSrcDir
            include "*.min.js"
        }
    }
}

task combineSrc(type: com.eriwen.gradle.js.tasks.CombineJsTask) {
    source = ["${projectDir}/public/templates/templates.js","${projectDir}/public/js/models/contact_model.js", "${projectDir}/public/js/views/contact_form_view.js", "${projectDir}/public/js/app.js" ]
    dest = file("${projectDir}/public/build/${appName}-src.js")
}

task appendJQuery(dependsOn: 'combineSrc') {
   String backboneSrc = file(new File("${projectDir}/public/build/${appName}-src.js")).text
   new File("${projectDir}/public/build/${appName}-jqueryWraped.js").withWriter{ out ->
       out << "(function(\$){" + file("${projectDir}/public/build/${appName}-src.js").text + "})(jQuery); \n"
    }
}

看来,gradle不会忽略不存在的文件。任务'combineSrc'尚未运行,但尚未创建文件....我无法运行任务'cobineSrc'来创建文件。它是一种死路一条。我做错了什么以及如何使这项工作?谢谢

1 个答案:

答案 0 :(得分:1)

你失败的原因是,你在配置appendJQuery任务期间所做的所有事情都应该在执行阶段完成。

只需重构你的appendJQuery任务:

task appendJQuery(dependsOn: 'combineSrc') {
    doLast{
        String backboneSrc = file(new File("${projectDir}/public/build/${appName}-src.js")).text
        new File("${projectDir}/public/build/${appName}-jqueryWraped.js").withWriter{ out ->
            out << "(function(\$){" + file("${projectDir}/public/build/${appName}-src.js").text + "})(jQuery); \n"
        }
    }
}
希望有所帮助!