latvian
latvian

Reputation: 3215

(No such file or directory) how to make non existant file to be ignored by gradle

when i run the command 'gradle tasks' or anything for that fact, i got the following error:

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

Here is my gradle build file:

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"
    }
}

It appears, that gradle doesn't ignore a file that is none existant. The task 'combineSrc' hasn't been run, yet to create the file....and i am unable to run the task 'cobineSrc' to create the file in the first place. Its kind a dead end. what am i doing wrong and how to make this work? Thank you

Upvotes: 0

Views: 437

Answers (1)

Rene Groeschke
Rene Groeschke

Reputation: 28653

The reason you're failing is, that all the stuff you currently doing during the configuration of the appendJQuery task should be done in the execution phase.

just refactor your appendJQuery task to do:

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"
        }
    }
}

hope that helps!

René

Upvotes: 1

Related Questions