Code Monkey home page Code Monkey logo

Comments (6)

michel-kraemer avatar michel-kraemer commented on June 20, 2024

The issue here is that you're extracting the files in a doLast block. Gradle cannot cache the block's output so it will always execute it again. You have to define a Copy task instead. Try this for example:

task downloadZipFile(type: Download) {
    src([
        'https://github.com/michel-kraemer/gradle-download-task/archive/refs/tags/5.3.0.zip',
        'https://github.com/michel-kraemer/gradle-download-task/archive/refs/tags/5.2.1.zip',
        'https://github.com/michel-kraemer/gradle-download-task/archive/refs/tags/5.2.0.zip'
    ])
    dest buildDir
}

task downloadAndUnzipFile(dependsOn: downloadZipFile, type: Copy) {
    for (f in downloadZipFile.outputs.files) {
        from zipTree(f)
    }
    into new File(buildDir, "extracted")
}

defaultTasks 'downloadAndUnzipFile'

Let me know if this helps, and if so, please close the issue. Thanks.

from gradle-download-task.

TMLWinston avatar TMLWinston commented on June 20, 2024

The recipe you provided has the same issues as the original setup.

I modified the downloadZipFiles to put:
onlyIfModified true
retries 5
acceptAnyCertificate true

I believe the behavior I am looking for is that the downloadAndUnzipFile would not be supplied a file to unzip if the file was not re-downloaded. The variable: downloadZipFile.outputs.files could be only supplied with the actual files when they are actually downloaded again.

As a default task, unzipping the data alone is over 4 minutes. Both methods above stop the download if the file exists already and is not modified. That saves 30 plus minutes in our remote work environments of today.

Great Product.

from gradle-download-task.

michel-kraemer avatar michel-kraemer commented on June 20, 2024

OK. So, do I understand you correctly that you were able to solve the issue?

from gradle-download-task.

TMLWinston avatar TMLWinston commented on June 20, 2024

No, The feature request is to prevent the unzip task to even run if the file is already downloaded and not modified. The current functionality is to return the files as downloaded even if they had not been downloaded due to not being modified. That causes the zip copy functions to activate which causes a delay that is not needed after initial download.

from gradle-download-task.

michel-kraemer avatar michel-kraemer commented on June 20, 2024

Interesting. For me, it displays UP-TO-DATE on the console for the unzip task, but I guess Gradle still has to traverse all files inside the ZIP file to compare them with the files in your target directory in order to determine if the task is up to date or not, which also takes some time. If you want to skip that too then you can simply add the following line to the downloadAndUnzipFile task:

onlyIf { downloadZipFile.didWork }

This way, the task will only be executed if the download task was executed too.

from gradle-download-task.

TMLWinston avatar TMLWinston commented on June 20, 2024

That helped a lot! That worked.

from gradle-download-task.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.