groovy Gradle向插件任务传递参数

bksxznpy  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(140)

我有来自gradle-js-plugin的这些任务:

combineJs {
    source = sourceJs
    dest = file(destDirJs + "/all.js")
}

minifyJs {
    source = combineJs
    dest = file( destDirJs + "/all-min.js")
    closure {
        warningLevel = 'QUIET'
    }
}

gzipJs {
    source = minifyJs
    dest = file(destDirJs + "/all-gzip-min.js")
}

我的问题是因为我必须多次更改sourceJs和destDirJs的值。所以我不想有很多重复的代码。
所以我在尝试这样的东西:

task gzipAll {
    sourceJs = ["WebContent/plugin/bootstrap-modal/js/bootstrap-modalmanager.js", "WebContent/plugin/bootstrap-modal/js/bootstrap-modal.js", "WebContent/js/bootstrap-dropdown.js", "WebContent/js/mandatory/bootstrap-analytics-setup.js"]         
    destDirJs = "WebContent/js/mandatory"
    tasks.combineJs().execute;
    tasks.minifyJs().execute;
    tasks.gzipJs().execute;

    //Here I need to change sourceJs and destDir and call all the task again.
}

实际上,我是在黑暗中尝试一个长镜头,我得到了一个例外:

Caused by: groovy.lang.MissingPropertyException: Could not find property 'sourceJs' on task ':combineJs'.

我也试过这样的东西,但没有工作。有一些例外:

combineJs(sourceJs, destDirJs) {
    source = $sourceJs
    dest = file($destDirJs + "/all.js")
}

有经验的人可以帮我解决这个问题吗?是不是很简单?谢谢

pw9qyyiw

pw9qyyiw1#

我还没有测试过它,但是因为gradle脚本是groovy脚本,所以你应该能够做这样的事情。

['dir1', 'dir2'].eachWithIndex { dir, index ->
    task "combineJs_$index"(type: combineJs) {
        source = dir
        dest = file(destDirJs + "/$index.js")
    }

    task "minifyJs_$index" (type: minifyJs) {
        source = "combineJs_$index"
        dest = file( destDirJs + "/$index-min.js")
        closure {
            warningLevel = 'QUIET'
        }
    }

    task "gzipJs_$index" (type: gzipJs) {
        source = "minifyJs_$index"
        dest = file(destDirJs + "/$index-gzip-min.js")
    }
}

当然,您需要正确的TaskTypes,并且可能需要更改输入,但这应该可以让您继续。

相关问题